您好,登錄后才能下訂單哦!
1、什么是Spring框架,Spring框架有哪些主要模塊
Spring框架是一個為Java應用程序開發提供綜合、廣泛的基礎性支持的Java平臺。 Spring幫助開發者解決了開發中基礎性的問題,使得開發人員可以專注于應用程序的開發。 Spring框架本身也是按照設計模式精心打造的,這使得我們可以在開發環境中安心地集成Spring框架,不必擔心Spring是如何在后臺工作的。
2、使用Spring框架能帶來哪些好處
下面列舉了一些使用Spring框架帶來的主要好處。
(1)Dependency Injection(DI)使得構造器和JavaBean properties文件中的依賴關系一目了然。
(2)與EJB容器相比較,IoC容器更加趨向于輕量級。這樣一來使用IoC容器在有限的內存和CPU資源的情況下進行應用程序的開發和發布就變得十分有利。
(3)Spring并沒有閉門造車,Spring利用了已有的技術,比如ORM框架、logging框架、J2EE、Quartz和JDK Timer,以及其他視圖技術。
(4)Spring框架是按照模塊的形式來組織的。由包和類的編號就可以看出其所屬的模塊,開發者只需選用需要的模塊即可。
(5)要測試一個用Spring開發的應用程序十分簡單,因為測試相關的環境代碼都已經囊括在框架中了。更加簡單的是,利用JavaBean形式的POJO類,可以很方便地利用依賴注入來寫入測試數據。
(6)Spring的Web框架也是一個精心設計的Web MVC框架,為開發者在Web框架的選擇上提供了一個除主流框架(比如Struts)和過度設計的、不流行Web框架以外的選擇。 |
(7)Spring提供了一個便捷的事務管理接口,適用于小型的本地事務處理(比如在單DB的環境下)和復雜的共同事務處理(比如利用JTA的復雜DB環境)。
3、什么是控制反轉(IoC),什么是依賴注入
(1)控制反轉是應用于軟件工程領域的,在運行時被裝配器對象用來綁定耦合對象的一種編程技巧,對象之間的耦合關系在編譯時通常是未知的。在傳統的編程方式中,業務邏輯的流程是由應用程序中早已被設定好關聯關系的對象來決定的。在使用控制反轉的情況下,業務邏輯的流程是由對象關系圖來決定的,該對象關系圖由裝配器負責實例化,這種實現方式還可以將對象之間的關聯關系的定義抽象化。綁定的過程是通過“依賴注入”實現的。 (2)控制反轉是一種以給予應用程序中目標組件更多控制為目的設計范式,并在實際工作中起到了有效的作用。 (3)依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功能對象實例化的模式。這就需要一種機制來激活相應的組件以提供特定的功能,所以依賴注入是控制反轉的基礎。否則如果在組件不受框架控制的情況下,框架又怎么知道要創建哪個組件呢?
4、在Java中依賴注入有哪些方式
(1)構造器注入。 (2)Setter方法注入。 (3)接口注入。
5、BeanFactory和ApplicationContext有什么區別
BeanFactory可以理解為含有Bean集合的工廠類。BeanFactory 包含了Bean的定義,以便在接收到客戶端請求時將對應的Bean實例化。 BeanFactory還能在實例化對象時生成協作類之間的關系。此舉將Bean自身從Bean客戶端的配置中解放出來。BeanFactory還包含Bean生命周期的控制,調用客戶端的初始化方法(Initialization Method)和銷毀方法(Destruction Method)。 從表面上看,ApplicationContext如同BeanFactory一樣具有Bean定義、Bean關聯關系的設置及根據請求分發Bean的功能。但ApplicationContext在此基礎上還提供了其他功能。
(1)提供了支持國際化的文本消息。
(2)統一的資源文件讀取方式。
(3)已在監聽器中注冊的Bean的事件。
以下是三種較常見的 ApplicationContext 實現方式。
(1)ClassPathXmlApplicationContext:從ClassPath的XML配置文件中讀取上下文,并生成上下文定義。應用程序上下文從程序環境變量中取得。ApplicationContext context = new ClassPathXmlApplicationContext(“application.xml”);
(2)FileSystemXmlApplicationContext :由文件系統中的XML配置文件讀取上下文。ApplicationContext context = new FileSystemXmlApplicationContext(“application.xml”);
(3)XmlWebApplicationContext:由Web應用的XML文件讀取上下文。
6、Spring提供幾種配置方式來設置元數據
Spring提供以下三種配置方式來設置元數據:
(1)基于XML的配置。 (2)基于注解的配置。 (3)基于Java的配置。
7、如何使用XML配置方式配置Spring
在Spring框架中,依賴和服務需要專門的配置文件實現,一般用XML格式的配置文件。這些配置文件的格式采用公共的模板,由一系列的Bean定義和專門的應用配置選項組成。 Spring XML配置的主要目的是使所有的Spring組件都可以用XML文件的形式來進行配置。這意味著不會出現其他的Spring配置類型(比如聲明配置方式或基于Java Class的配置方式)。 Spring的XML配置方式是使用被Spring命名空間所支持的一系列的XML標簽來實現的。Spring主要的命名空間有context、beans、jdbc、tx、aop、mvc和aso。例如:
<beans>
<!-- JSON Support -->
<bean name="viewResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean name="jsonTemplate"
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/>
</beans>
下面這個web.xml僅配置了DispatcherServlet,最簡單的配置便能滿足應用程序配置運行時組件的需求。
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
8、Spring提供哪些配置形式Spring對Java配置的支持是由@Configuration注解和@Bean注解來實現的。由@Bean注解的方法將會實例化、配置和初始化一個新對象,這個對象將由Spring的IoC容器來管理。@Bean聲明所起到的作用與元素類似。被@Configuration所注解的類則表示這個類的主要目的是作為Bean定義的資源。被@Configuration聲明的類可以通過在同一個類內部調用@bean方法來設置嵌入Bean的依賴關系。
br/>Spring對Java配置的支持是由@Configuration注解和@Bean注解來實現的。由@Bean注解的方法將會實例化、配置和初始化一個新對象,這個對象將由Spring的IoC容器來管理。@Bean聲明所起到的作用與元素類似。被@Configuration所注解的類則表示這個類的主要目的是作為Bean定義的資源。被@Configuration聲明的類可以通過在同一個類內部調用@bean方法來設置嵌入Bean的依賴關系。
@Configuration
publicclass AppConfig{
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
與上面的@Beans配置文件相同的XML配置文件如下:
<beans>
<bean id="myService" class="com.gupaoedu.services.MyServiceImpl"/>
</beans>
上述配置方式的實例化方式如下:
publicstaticvoid main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
MyService myService = ctx.getBean(MyService.class);
myService.doStuff();
}
要使用組件掃描,僅需用@Configuration進行注解即可:
@Configuration
@ComponentScan(basePackages = "com.gupaoedu")
publicclass AppConfig {
}
在上面的例子中,com.gupaoedu包首先會被掃描到,然后在容器內查找被@Component 聲明的類,找到后將這些類按照Spring Bean定義進行注冊。
如果你要在Web應用開發中選用上述配置方式,需要用AnnotationConfigWebApplicationContext類來讀取配置文件,可以用來配置Spring的Servlet監聽器ContrextLoaderListener或者Spring MVC的DispatcherServlet。
例如:
<web-app>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.gupaoedu.AppConfig</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.gupaoedu.web.MVCConfig</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
</web-app>
9、怎樣用注解的方式配置Spring
Spring在2.5版本以后開始支持用注解的方式配置依賴注入。可以用注解的方式來替代XML方式的Bean描述,可以將Bean描述轉移到組件類的內部,只需要在相關類上、方法上或者字段聲明上使用注解即可。注解注入將會被容器在XML注入之前處理,所以后者會覆蓋前者對于同一個屬性的處理結果。
注解裝配在Spring中是默認關閉的,需要在Spring文件中進行配置才能使用基于注解的裝配模式。如果你想要在應用程序中使用注解的方式,請參考如下配置:
<beans>
<context:annotation-config/>
</beans>
配置完成以后,就可以用注解的方式在Spring中向屬性、方法和構造方法中自動裝配變量。
下面是幾種比較重要的注解類型。
(1)@Required:該注解應用于設值方法。
(2)@Autowired:該注解應用于設值方法、非設值方法、構造方法和變量。
(3)@Qualifier:該注解和@Autowired注解搭配使用,用于消除特定Bean自動裝配的歧義。
(4)JSR-250 Annotations:Spring支持基于JSR-250 注解的注解,即@Resource、@PostConstruct和@PreDestroy。
10、請解釋Spring Bean的生命周期
Spring Bean的生命周期簡單易懂。在一個Bean實例被初始化時,需要執行一系列初始化操作以使其達到可用的狀態。同樣,當一個Bean不再被調用時需要進行相關的析構操作,并從Bean容器中移除。 Spring Bean Factory 負責管理在Spring容器中被創建的Bean的生命周期。Bean的生命周期由兩組回調方法組成。
(1)初始化之后調用的回調方法。
(2)銷毀之前調用的回調方法。
Spring提供了以下4種方式來管理Bean的生命周期事件:
(1)InitializingBean和DisposableBean回調接口。
(2)針對特殊行為的其他Aware接口。
(3)Bean配置文件中的customInit()方法和customDestroy()方法。 (4)@PostConstruct和@PreDestroy注解方式。
br/>(4)@PostConstruct和@PreDestroy注解方式。
<beans>
<bean id="demoBean" class="com.gupaoedu.task.DemoBean" init-Method="customInit" destroy-Method="customDestroy"></bean>
</beans>
11、Spring Bean作用域的區別是什么
Spring容器中的Bean可以分為5個作用域。所有作用域的名稱都是自說明的,但是為了避免混淆,還是讓我們來解釋一下。
(1)singleton:這種Bean作用域是默認的,這種作用域確保不管接收到多少個請求,每個容器中只有一個Bean實例,單例模式由Bean Factory自身來維護。
(2)prototype:prototype作用域與singleton作用域相反,為每一個Bean請求提供一個實例。
(3)request:在請求Bean作用域內為每一個來自客戶端的網絡請求創建一個實例,在請求完成以后,Bean會失效并被垃圾回收器回收。
(4)Session:與request作用域類似,確保每個Session中有一個Bean實例,在Session過期后,Bean會隨之失效。
(5)global-session:global-session和Portlet應用相關。當應用部署在Portlet容器中時,它包含很多Portlet。如果想讓所有的Portlet共用全局存儲變量,那么這個全局存儲變量需要存儲在global-session中。全局作用域與Servlet中的Session作用域效果相同。
12、什么是Spring Inner Bean
在Spring中,無論何時,當Bean僅被調用了一個屬性時,一個明智的做法是將這個Bean聲明為內部Bean。內部Bean可以用setter注入“屬性”和用構造方法注入“構造參數”的方式來實現。 比如,在應用程序中一個Customer類引用了一個Person類,我們要創建一個Person類的實例,然后在Customer內部使用。
**public class Customer {
private Person person;
}
public class Person {
private String name;
private String address;
private int age;
}**
內部Bean的聲明方式如下:
<bean id="CustomerBean" class="com.gupaoedu.common.Customer">
<property name="person">
<bean class="com.gupaoedu.common.Person">
<property name="name" value="lokesh"/>
<property name="address" value="India"/>
<property name="age" value="34"/>
</bean>
</property>
</bean>
13、Spring中的單例Bean是線程安全的嗎
Spring并沒有對單例Bean進行任何多線程的封裝處理。關于單例Bean的線程安全和并發問題需要開發者自行解決。但實際上,大部分Spring Bean并沒有可變的狀態(比如Serview類和DAO類),所以在某種程度上,Spring的單例Bean是線程安全的。如果你的Bean有多種狀態(比如View Model對象),就需要自行保證線程安全。
最容易的解決辦法就是將多態Bean的作用域由“singleton”變更為“prototype”。
14、請舉例說明如何在Spring中注入一個Java集合
Spring提供了以下4種集合類的配置元素:
(1)<list>標簽用來裝配可重復的list值。
(2)<set>標簽用來裝配沒有重復的set值。
(3)<map>標簽用來注入鍵和值,可以為任何類型的鍵值對。
(4)<props>標簽支持注入鍵和值都是字符串類型的鍵值對。
下面看一個具體的例子:
<beans>
<bean id="javaCollection" class="com.gupaoedu.JavaCollection">
<property name="customList">
<list>
<value>INDIA</value>
<value>Pakistan</value>
<value>USA</value>
<value>UK</value>
</list>
</property>
<property name="customSet">
<set>
<value>INDIA</value>
<value>Pakistan</value>
<value>USA</value>
<value>UK</value>
</set>
</property>
<property name="customMap">
<map>
<entry key="1" value="INDIA"/>
<entry key="2" value="Pakistan"/>
<entry key="3" value="USA"/>
<entry key="4" value="UK"/>
</map>
</property>
<property name="customProperies">
<props>
<prop key="admin">admin@gupaoedu.com</prop>
<prop key="support">support@gupaoedu.com</prop>
</props>
</property>
</bean>
</beans>
15、如何向Spring Bean中注入java.util.Properties
第一種方法是使用如下代碼所示的標簽:
<bean id="adminUser" class="com.gupaoedu.common.Customer">
<property name="emails">
<props>
<prop key="admin">admin@gupaoedu.com</prop>
<prop key="support">support@gupaoedu.com</prop>
</props>
</property>
</bean>
也可用“util:”命名空間從Properties文件中創建一個Properties Bean,然后利用setter方法注入Bean的引用。
16、請解釋Spring Bean的自動裝配
在Spring框架中,在配置文件中設定Bean的依賴關系是一個很好的機制,Spring容器還可以自動裝配合作關系Bean之間的關聯關系。這意味著Spring可以通過向BeanFactory中注入的方式自動搞定Bean之間的依賴關系。自動裝配可以設置在每個Bean上,也可以設置在特定的Bean上。
下面的XML配置文件表明了如何根據名稱將一個Bean設置為自動裝配模式:<bean id="employeeDAO" class="com.gupaoedu.EmployeeDAOImpl" autowire="byName" />
除了Bean配置文件中提供的自動裝配模式,還可以使用@Autowired注解來自動裝配指定的Bean。在使用@Autowired注解之前需要按照如下的配置方式在Spring配置文件中進行配置:
br/>除了Bean配置文件中提供的自動裝配模式,還可以使用@Autowired注解來自動裝配指定的Bean。在使用@Autowired注解之前需要按照如下的配置方式在Spring配置文件中進行配置:
<context:annotation-config />
也可以通過在配置文件中配置AutowiredAnnotationBeanPostProcessor 達到相同的效果:<bean class ="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
配置好以后就可以使用@Autowired來標注了:
@Autowired
public EmployeeDAOImpl(EmployeeManager manager){
this.manager=manager;
}
17、自動裝配有哪些局限性
自動裝配有如下局限性。
? 重寫:你仍然需要使用< property>設置指明依賴,這意味著總要重寫自動裝配。 ? 原生數據類型:你不能自動裝配簡單的屬性,如原生類型、字符串和類。 ? 模糊特性:自動裝配總是沒有自定義裝配精確,因此如果可能盡量使用自定義裝配。
18、請解釋各種自動裝配模式的區別
在Spring中共有5種自動裝配模式,讓我們逐一分析。
(1)no:這是Spring的默認設置,在該設置下自動裝配是關閉的,開發者需要自行在Bean定義中用標簽明確地設置依賴關系。
(2)byName:該模式可以根據Bean名稱設置依賴關系。當向一個Bean中自動裝配一個屬性時,容器將根據Bean的名稱自動在配置文件中查詢一個匹配的Bean。如果找到就裝配這個屬性,如果沒找到就報錯。
(3)byType:該模式可以根據Bean類型設置依賴關系。當向一個Bean中自動裝配一個屬性時,容器將根據Bean的類型自動在配置文件中查詢一個匹配的Bean。如果找到就裝配這個屬性,如果沒找到就報錯。
(4)constructor:和byType模式類似,但是僅適用于有與構造器相同參數類型的Bean,如果在容器中沒有找到與構造器參數類型一致的Bean,那么將會拋出異常。 (5)autodetect:該模式自動探測使用constructor自動裝配或者byType自動裝配。首先會嘗試找合適的帶參數的構造器,如果找到就是用構造器自動裝配,如果在Bean內部沒有找到相應的構造器或者構造器是無參構造器,容器就會自動選擇byType模式。
**`19、請舉例解釋@Required注解`**
br/>(5)autodetect:該模式自動探測使用constructor自動裝配或者byType自動裝配。首先會嘗試找合適的帶參數的構造器,如果找到就是用構造器自動裝配,如果在Bean內部沒有找到相應的構造器或者構造器是無參構造器,容器就會自動選擇byType模式。
**`19、請舉例解釋@Required注解`**
在應用程序的生命周期中,你可能不大愿意花時間驗證所有Bean的屬性是否按照上下文文件正確配置,或者你寧可驗證某個Bean的特定屬性是否被正確設置。即使用“dependency-check”屬性也不能很好地解決這個問題,在這種情況下需要使用@Required 注解。
可用如下的方式來標明Bean的設值方法:
public class EmployeeFactoryBean extends AbstractFactoryBean<Object> {
private String designation;
public String getDesignation() {
return designation;
}
@Required
public void setDesignation(String designation) {
this.designation = designation;
}
}
RequiredAnnotationBeanPostProcessor是Spring中的后置處理器,用來驗證被@Required 注解的Bean屬性是否被正確設置了。在使用RequiredAnnotationBeanPostProcesso驗證Bean屬性之前,要在IoC容器中對其進行注冊:<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />
但是如果沒有屬性被用@Required注解過,后置處理器會拋出一個BeanInitializationException異常。
br/>但是如果沒有屬性被用@Required注解過,后置處理器會拋出一個BeanInitializationException異常。
20、請舉例說明@Qualifier注解@Qualifier注解意味著可以在被標注Bean的字段上自動裝配。@Qualifier注解可以用來取消Spring不能取消的Bean應用。
br/>@Qualifier注解意味著可以在被標注Bean的字段上自動裝配。@Qualifier注解可以用來取消Spring不能取消的Bean應用。
21、構造方法注入和設值注入有什么區別
請注意以下明顯的區別:
(1)設值注入支持大部分依賴注入,如果我們僅需要注入int、string和long型的變量,不要用設值方法注入。對于基本類型,如果沒有注入,可以為基本類型設置默認值。構造方法注入不支持大部分依賴注入,因為在調用構造方法時必須傳入正確的構造參數,否則會報錯。
(2)設值注入不會重寫構造方法的值。如果我們對同一個變量同時使用了構造方法注入和設值注入,那么構造方法將不能覆蓋設值注入的值。很明顯,因為構造方法只在對象被創建時被調用。
(3)在使用設值注入時還不能保證某種依賴是否已經被注入,也就是說,這時對象的依賴關系有可能是不完整的。而在另一種情況下,構造器注入則不允許生成依賴關系不完整的對象。
(4)在設值注入時如果對象A和對象B互相依賴,在創建對象A時Spring會拋出ObjectCurrentlyInCreationException異常,因為在對象B被創建之前對象A是不能被創建的,反之亦然。Spring用設值注入解決了循環依賴問題,因為對象的設值方法是在對象被創建之前被調用的。
22、Spring中有哪些不同類型的事件
Spring的ApplicationContext 提供了支持事件和代碼中監聽器的功能。
我們可以創建Bean來監聽在ApplicationContext 中發布的事件。對于ApplicationEvent類和在ApplicationContext接口中處理的事件,如果一個Bean實現了ApplicationListener接口,當一個ApplicationEvent 被發布以后,Bean會自動被通知。
public class AllApplicationEventListener implements ApplicationListener<ApplicationEvent> {
@Override
public void onApplicationEvent(ApplicationEvent applicationEvent) {
//process event
}
}
Spring 提供了以下5種標準的事件。
(1)上下文更新事件(ContextRefreshedEvent):該事件會在ApplicationContext被初始化或者更新時發布。也可以在調用ConfigurableApplicationContext 接口中的refresh()方法時被觸發。
(2)上下文開始事件(ContextStartedEvent):當容器調用ConfigurableApplicationContext的Start()方法開始或重新開始容器時觸發該事件。
(3)上下文停止事件(ContextStoppedEvent):當容器調用ConfigurableApplicationContext的Stop()方法停止容器時觸發該事件。
(4)上下文關閉事件(ContextClosedEvent):當ApplicationContext被關閉時觸發該事件。容器被關閉時,其管理的所有單例Bean都被銷毀。
(5)請求處理事件(RequestHandledEvent):在Web應用中,當一個HTTP請求(Request)結束時觸發該事件。
除了上面介紹的事件,還可以通過擴展ApplicationEvent類來自定義事件:
public class CustomApplicationEvent extends ApplicationEvent {
public CustomApplicationEvent(Object source, final String msg) {
super(source);
System.out.println("Created a Custom event");
}
}
為了監聽這個事件,還需要創建一個監聽器:
public class CustomEventListener implements ApplicationListener<CustomApplicationEvent> {
@Override
public void onApplicationEvent(CustomApplicationEvent applicationEvent) {
}
}
之后通過ApplicationContext接口的publishEvent()方法來發布自定義事件:
CustomApplicationEvent customEvent=new CustomApplicationEvent(applicationContext, "Test message");
applicationContext.publishEvent(customEvent
23、FileSystemResource和ClassPathResource有什么區別
在FileSystemResource 中需要給出spring-config.xml文件在項目中的相對路徑或者絕對路徑。在ClassPathResource中Spring會在ClassPath中自動搜尋配置文件,所以要把ClassPathResource 文件放在ClassPath下。
如果將spring-config.xml保存在了src目錄下,只需給出配置文件的名稱即可,因為src是默認的路徑。
簡而言之,ClassPathResource在環境變量中讀取配置文件,FileSystemResource在配置文件中讀取配置文件。
24、Spring中用到了哪些設計模式
Spring中使用了大量的設計模式,下面列舉了一些比較有代表性的設計模式。
(1)代理模式:在AOP和remoting中被用得比較多。
(2)單例模式:在Spring配置文件中定義的Bean默認為單例模式。
(3)模板模式:用來解決代碼重復問題,比如RestTemplate、JmsTemplate、JpaTemplate。
(4)委派模式:Spring提供了DispatcherServlet來對請求進行分發。
(5)工廠模式:BeanFactory用來創建對象的實例,貫穿于BeanFactory和ApplicationContext接口。
(6)代理模式:代理模式AOP思想的底層實現技術,Spring中采用JDK Proxy和CGLib類庫。
25、在Spring中如何更有效地使用JDBC
使用Spring JDBC可以使得資源管理及錯誤處理的代價減小。開發人員只需通過statements和queries語句從數據庫中存取數據。Spring通過模板類能更有效地使用JDBC,也就是所謂的JdbcTemplate。
26、請解釋Spring中的IoC容器
Spring中的org.springframework.beans包和org.springframework.context包構成了Spring IoC容器的基礎。
BeanFactory接口提供了一個先進的配置機制,使得任何類型的對象的配置都成為可能。ApplicationContex接口對BeanFactory(是一個子接口)進行了擴展,在BeanFactory的基礎上添加了其他功能,比如與Spring的AOP更容易集成,也提供了處理Message Resource的機制(用于國際化),以及事件傳播及應用層的特別配置,比如針對Web應用的WebApplicationContext。
27、在Spring中可以注入null或空字符串嗎
完全可以。
喜歡文章記得贊個贊,感謝支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。