解鎖Spring框架姿勢1
Spring
介紹:Spring 框架是一個Java平臺,它為開發Java應用程式提供全面的基礎架構支援。Spring負責基礎架構,因此您可以專注於應用程式的開發。
Spring可以讓您從“plain old Java objects”(POJO)中構建應用程式和通過非侵入性的POJO實現企業應用服務。此功能適用於Java SE的程式設計模型,全部的或部分的適應Java EE模型。
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; }
由繼承關係可以看出Applicationcontext容器功能強於Beanfactory容器
參考:
http://ifeve.com/overview-getting-started-with-spring/