解鎖Spring框架姿勢1

布林bl發表於2019-02-01

解鎖Spring框架姿勢1

Spring

介紹:Spring 框架是一個Java平臺,它為開發Java應用程式提供全面的基礎架構支援。Spring負責基礎架構,因此您可以專注於應用程式的開發。 Spring可以讓您從“plain old Java objects”(POJO)中構建應用程式和通過非侵入性的POJO實現企業應用服務。此功能適用於Java SE的程式設計模型,全部的或部分的適應Java EE模型。

解鎖Spring框架姿勢1

Ioc(依賴注入)

1、 What:以前建立物件需要自己主動去new,比較費勁,ioc模式提供ioc service provider,解決了被注入物件依賴被依賴物件問題,減低了耦合。 2、 依賴注入方式 a) 構造器注入 b) Setter注入 c) 介面注入,介面注入侵入性強,使用比較少

Ioc兩個主要容器

Beanfactory容器(介面)

//The root interface for accessing a Spring bean container.
//訪問Spring bean容器的根介面。
public interface BeanFactory {
    String FACTORY_BEAN_PREFIX = "&";

	//返回指定bean的例項,該例項可以是共享的或獨立的。
    Object getBean(String var1) throws BeansException;

	//返回指定bean的例項,該例項可以是共享的或獨立的。
    <T> T getBean(String var1, Class<T> var2) throws BeansException;

	//返回指定bean的例項,該例項可以是共享的或獨立的。
    <T> T getBean(Class<T> var1) throws BeansException;

	//返回指定bean的例項,該例項可以是共享的或獨立的。
    Object getBean(String var1, Object... var2) throws BeansException;

	//返回指定bean的例項,該例項可以是共享的或獨立的。
    <T> T getBean(Class<T> var1, Object... var2) throws BeansException;
	
	//此bean工廠是否包含具有給定名稱的bean定義或外部註冊的singleton 例項?
    boolean containsBean(String var1);

	//這個bean是一個共享的單例嗎?
    boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;
	
	//這ben是原型嗎?也就是說,{@link #getBean}總會返回獨立例項嗎?
    boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;

	//檢查具有給定名稱的bean是否與指定的型別匹配。
    boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;

	//檢查具有給定名稱的bean是否與指定的型別匹配。
    boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;

	//確定具有給定名稱的bean的型別。更具體地說,*確定{@link #getBean}將為給定名稱返回的物件型別
    Class<?> getType(String var1) throws NoSuchBeanDefinitionException;
	
	//返回給定bean名稱的別名(如果有)。 *在{@link #getBean}呼叫中使用時,所有這些別名都指向同一個bean。
    String[] getAliases(String var1);
}


複製程式碼

Applicationcontext容器(介面)

public interface ApplicationContext extends EnvironmentCapable, 
ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
   
	//返回此應用程式上下文的唯一ID。
	String getId();
	
	//返回此上下文所屬的已部署應用程式的名稱。
    String getApplicationName();

	//返回此上下文的友好名稱
    String getDisplayName();

	//首次載入此上下文時返回時間戳。
    long getStartupDate();

	//返回父上下文,如果沒有父,則返回{@code null},這是上下文層次結構的根。
    ApplicationContext getParent();

	//為此上下文公開AutowireCapableBeanFactory功能。
    AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
}



複製程式碼

解鎖Spring框架姿勢1
由繼承關係可以看出Applicationcontext容器功能強於Beanfactory容器

參考:

ifeve.com/overview-ge…

相關文章