Spring IOC、AOP
借助Spring實(shí)現(xiàn)具有依賴關(guān)系的對(duì)象之間的解耦。
對(duì)象A運(yùn)行需要對(duì)象B,由主動(dòng)創(chuàng)建變?yōu)镮OC容器注入,這便是控制反轉(zhuǎn)。
獲得依賴對(duì)象的過(guò)程被反轉(zhuǎn)了,獲取依賴對(duì)象的過(guò)程由自身創(chuàng)建變?yōu)橛蒊OC容器注入,這便是依賴注入。
BeanFactory 和 ApplicationContext 有什么區(qū)別?
BeanFactory是Spring的最底層接口,包含bean的定義,管理bean的加載,實(shí)例化,控制bean的生命周期,特點(diǎn)是每次獲取對(duì)象時(shí)才會(huì)創(chuàng)建對(duì)象。
ApplicationContext是BeanFactory的子接口,擁有BeanFactory的全部功能,并且擴(kuò)展了很多高級(jí)特性,每次容器啟動(dòng)時(shí)就會(huì)創(chuàng)建所有的對(duì)象。ApplicationContext的額外功能:
繼承MessageSource,支持國(guó)際化;
統(tǒng)一的資源文件訪問(wèn)方式;
提供在監(jiān)聽器中注冊(cè)bean;
同時(shí)加載過(guò)個(gè)配置文件;
載入多個(gè)(有繼承關(guān)系)上下文,使得每個(gè)上下文都專注于一個(gè)特定的層次,比如應(yīng)用的web層。
BeanFactory通常以編程的方式被創(chuàng)建,ApplicationContext可以以聲明的方式創(chuàng)建,如使用ContextLoader。
BeanFactory 和 ApplicationContext都支持BeanPostProcessor,BeanFactoryPostProcessor,但BeanFactory需要手動(dòng)注冊(cè),ApplicationContext則是自動(dòng)注冊(cè)。
什么是 JavaConfig?
JavaConfig是Spring3.0新增的概念,就是以注解的形式取代Spring中繁瑣的xml文件。 JavaConfig結(jié)合了xml的解耦和java編譯時(shí)檢查的優(yōu)點(diǎn)。
@Configuration,表示這個(gè)類是配置類;
@ComponentScan,相當(dāng)于xml的;
@Bean,相當(dāng)于xml的;
@EnableWebMvc,相當(dāng)于xml的;
@ImportResource,相當(dāng)于xml的;
@PropertySource,用于讀取properties配置文件;
@Profile,一般用于多環(huán)境配置,激活時(shí)可用@ActiveProfile("dev")注解;
Spring 有幾種配置方式?
1. xml配置文件方式
2. 基于注解的方式
項(xiàng)目越來(lái)越大,基于xml配置太麻煩,Spring 2.x時(shí)代提供了聲明bean的注解。
2.1 Bean的定義相關(guān)注解
@Component
@Controller
@Service
@Repository
2.2 Bean的注入相關(guān)注解
@Autowire
@Resource
3. 基于Java的方式
Spring 3.x以后,可以通過(guò)Java代碼裝配Bean。
原來(lái)就是配置類啊,通過(guò)@Bean、@Component、getBean方式進(jìn)行Bean的注冊(cè)和發(fā)現(xiàn)。
更多關(guān)于“java培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽。