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容器