spring 中依賴注入有哪幾種注解
Spring對于Bean的依賴注入,支持多種注解方式:
@Resource
javax.annotation
JSR250 (Common Annotations for Java)
@Inject
javax.inject
JSR330 (Dependency Injection for Java)
@Autowired
org.springframework.bean.factory
Spring
直觀上看起來,@Autowired是Spring提供的注解,其他幾個(gè)都是JDK本身內(nèi)建的注解,Spring對這些注解也進(jìn)行了支持。但是使用起來這三者到底有什么區(qū)別呢?筆者經(jīng)過方法的測試,發(fā)現(xiàn)一些有意思的特性。總結(jié)如下:
1. @Autowired有個(gè)required屬性,可以配置為false,這種情況下如果沒有找到對應(yīng)的bean是不會(huì)拋異常的。@Inject和@Resource沒有提供對應(yīng)的配置,所以必須找到否則會(huì)拋異常。
2. @Autowired和@Inject基本是一樣的,因?yàn)閮烧叨际鞘褂肁utowiredAnnotationBeanPostProcessor來處理依賴注入。但是@Resource是個(gè)例外,它使用的是CommonAnnotationBeanPostProcessor來處理依賴注入。當(dāng)然,兩者都是BeanPostProcessor。
@Resource
@Autowired
@Resource是jdk中的,@Autowired是spring的,兩個(gè)都可以注入一個(gè)java bean
@Resource
@Autowired
@Resource是jdk中的,@Autowired是spring的,兩個(gè)都可以注入一個(gè)java bean
以周19695777779: spring能做到動(dòng)態(tài)注入嗎 -
徐水縣復(fù)合: ______ 可以.spring依賴注入的三種實(shí)現(xiàn)形式分別為:1、 接口注入2、 設(shè)置注入3.構(gòu)造子函數(shù)注入接口注入:而接口注入則更方便動(dòng)態(tài)注入.簡單的說,接口注入就是在運(yùn)行期,加載接口實(shí)現(xiàn)并創(chuàng)建其實(shí)例的工作由容器完成.如下例子:public class ClassA {private InterfaceB clzB;public Object doSomething(InterfaceB b) {clzB = b;return clzB.doIt();}……} 在運(yùn)行期,InterfaceB實(shí)例將由spring容器提供.而spingIOC概念的提出也是把動(dòng)態(tài)注入在spring體現(xiàn)了.
以周19695777779: Spring中構(gòu)設(shè)值注入的方式是怎樣的?
徐水縣復(fù)合: ______ 在各種類型的依賴注入模式中,設(shè)值注入模式在實(shí)際開發(fā)中得到了最廣泛的應(yīng)用(其中很大一部分得力于Spring框架的影響). 在筆者看來,基于設(shè)置模式的依賴注入機(jī)制更加直觀、也更加自然.Quick Start中的示例,就是典型的設(shè)置注入,即通過類的setter方法完成依賴關(guān)系的設(shè)置. 幾種依賴注入模式的對比總結(jié) 接口注入模式因?yàn)榫邆淝秩胄?它要求組件必須與特定的接口相關(guān)聯(lián),因此并不被看好,實(shí)際使用有限. 希望我的回答可以幫到你.
以周19695777779: 各位,Spring中的依賴注入,和控制反轉(zhuǎn)怎么理解 -
徐水縣復(fù)合: ______ 依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念.具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用...
以周19695777779: spring 哪些層可以依賴注入 -
徐水縣復(fù)合: ______ 依賴注入(Dependency Injection) 是一個(gè)非常簡單的概念,伸手-等待. 如例程1-1所示,Client依賴于抽象類型(甚至是具體類) IServer,蛋是(1)Client的類體中不創(chuàng)建IServer(子類)的對象,它不想自己創(chuàng)建IServer對象,而是提供public...
以周19695777779: spring 中依賴注入的思想? -
徐水縣復(fù)合: ______ 依賴注入(Dependecy Injection)具體的講:當(dāng)某個(gè)角色 需要另外一個(gè)角色協(xié)助的時(shí)候,在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例.但在spring中 創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn).創(chuàng)建被調(diào)用者的工作由spring來完成,然后注入調(diào)用者 因此也稱為依賴注入. spring以動(dòng)態(tài)靈活的方式來管理對象 , 注入的兩種方式,設(shè)置注入和構(gòu)造注入. 設(shè)置注入的優(yōu)點(diǎn):直觀,自然 構(gòu)造注入的優(yōu)點(diǎn):可以在構(gòu)造器中決定依賴關(guān)系的順序. 依賴注入(DI)應(yīng)該是實(shí)現(xiàn)控制反轉(zhuǎn)(IOC)的一種方式而已,相應(yīng)的還有依賴查找(Dependency Lookup)
以周19695777779: 來個(gè)高手給我解釋下 Spring 注入 和 依賴 . COPY網(wǎng)上的爬,最好寫上自己對注入和依賴的理解 . Thanks -
徐水縣復(fù)合: ______ 那個(gè)叫做依賴注入和控制反轉(zhuǎn),都是一個(gè)意思.簡單的來說就是不使用new來實(shí)例化獲取對象,而是使用spring工具類的getBean()方法去獲取調(diào)用(依賴)對象.詳細(xì)點(diǎn)的: 一、首先說什么是依賴. 對于兩個(gè)相對獨(dú)立的對象,當(dāng)一個(gè)對象負(fù)...
以周19695777779: spring中service之間有業(yè)務(wù)依賴,是注入service還是dao -
徐水縣復(fù)合: ______ 都可以,不過一般是注入service
以周19695777779: 什么是依賴注入? -
徐水縣復(fù)合: ______ 依賴注入是spring框架中的解耦的一種策略,稱為DI或IOC(控制反轉(zhuǎn)),主要有set方式(提供set和get方法)和constractor(構(gòu)造方法)方式,它使得類與類之間以配置文件的形式組織在一起,而不是硬編碼的方式,例如classA 中用到了classB如果寫代碼的話是new 一個(gè)classB,而用依賴注入的方式則是在applicationContext.xml里面寫兩個(gè) <bean id="id1" class="A"><property name="B" ref="id2"></bean> <bean id="id2" class="B"></bean>,就是在類A里原來需要new 的地方就不需要寫了,
以周19695777779: spring 注入 和 實(shí)例化的差別(別說沒區(qū)別) -
徐水縣復(fù)合: ______ 依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念.具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用...
以周19695777779: 使用spring所管理的bean有哪些注入方式 -
徐水縣復(fù)合: ______ 首先這就要談到一個(gè)概念叫做IOC或者也可以叫做DI,只是相同事件不同角度的描述,DI(依賴注入)是實(shí)現(xiàn),IOC(控制反轉(zhuǎn))是思想.通常情況下,我們創(chuàng)建一個(gè)類的實(shí)例對象都是自己new類的構(gòu)造方法,自行創(chuàng)建一個(gè)對象,但是控制反轉(zhuǎn)不...
@Resource
javax.annotation
JSR250 (Common Annotations for Java)
@Inject
javax.inject
JSR330 (Dependency Injection for Java)
@Autowired
org.springframework.bean.factory
Spring
直觀上看起來,@Autowired是Spring提供的注解,其他幾個(gè)都是JDK本身內(nèi)建的注解,Spring對這些注解也進(jìn)行了支持。但是使用起來這三者到底有什么區(qū)別呢?筆者經(jīng)過方法的測試,發(fā)現(xiàn)一些有意思的特性。總結(jié)如下:
1. @Autowired有個(gè)required屬性,可以配置為false,這種情況下如果沒有找到對應(yīng)的bean是不會(huì)拋異常的。@Inject和@Resource沒有提供對應(yīng)的配置,所以必須找到否則會(huì)拋異常。
2. @Autowired和@Inject基本是一樣的,因?yàn)閮烧叨际鞘褂肁utowiredAnnotationBeanPostProcessor來處理依賴注入。但是@Resource是個(gè)例外,它使用的是CommonAnnotationBeanPostProcessor來處理依賴注入。當(dāng)然,兩者都是BeanPostProcessor。
@Resource
@Autowired
@Resource是jdk中的,@Autowired是spring的,兩個(gè)都可以注入一個(gè)java bean
@Resource
@Autowired
@Resource是jdk中的,@Autowired是spring的,兩個(gè)都可以注入一個(gè)java bean
相關(guān)評說:
徐水縣復(fù)合: ______ 可以.spring依賴注入的三種實(shí)現(xiàn)形式分別為:1、 接口注入2、 設(shè)置注入3.構(gòu)造子函數(shù)注入接口注入:而接口注入則更方便動(dòng)態(tài)注入.簡單的說,接口注入就是在運(yùn)行期,加載接口實(shí)現(xiàn)并創(chuàng)建其實(shí)例的工作由容器完成.如下例子:public class ClassA {private InterfaceB clzB;public Object doSomething(InterfaceB b) {clzB = b;return clzB.doIt();}……} 在運(yùn)行期,InterfaceB實(shí)例將由spring容器提供.而spingIOC概念的提出也是把動(dòng)態(tài)注入在spring體現(xiàn)了.
徐水縣復(fù)合: ______ 在各種類型的依賴注入模式中,設(shè)值注入模式在實(shí)際開發(fā)中得到了最廣泛的應(yīng)用(其中很大一部分得力于Spring框架的影響). 在筆者看來,基于設(shè)置模式的依賴注入機(jī)制更加直觀、也更加自然.Quick Start中的示例,就是典型的設(shè)置注入,即通過類的setter方法完成依賴關(guān)系的設(shè)置. 幾種依賴注入模式的對比總結(jié) 接口注入模式因?yàn)榫邆淝秩胄?它要求組件必須與特定的接口相關(guān)聯(lián),因此并不被看好,實(shí)際使用有限. 希望我的回答可以幫到你.
徐水縣復(fù)合: ______ 依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念.具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用...
徐水縣復(fù)合: ______ 依賴注入(Dependency Injection) 是一個(gè)非常簡單的概念,伸手-等待. 如例程1-1所示,Client依賴于抽象類型(甚至是具體類) IServer,蛋是(1)Client的類體中不創(chuàng)建IServer(子類)的對象,它不想自己創(chuàng)建IServer對象,而是提供public...
徐水縣復(fù)合: ______ 依賴注入(Dependecy Injection)具體的講:當(dāng)某個(gè)角色 需要另外一個(gè)角色協(xié)助的時(shí)候,在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例.但在spring中 創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn).創(chuàng)建被調(diào)用者的工作由spring來完成,然后注入調(diào)用者 因此也稱為依賴注入. spring以動(dòng)態(tài)靈活的方式來管理對象 , 注入的兩種方式,設(shè)置注入和構(gòu)造注入. 設(shè)置注入的優(yōu)點(diǎn):直觀,自然 構(gòu)造注入的優(yōu)點(diǎn):可以在構(gòu)造器中決定依賴關(guān)系的順序. 依賴注入(DI)應(yīng)該是實(shí)現(xiàn)控制反轉(zhuǎn)(IOC)的一種方式而已,相應(yīng)的還有依賴查找(Dependency Lookup)
徐水縣復(fù)合: ______ 那個(gè)叫做依賴注入和控制反轉(zhuǎn),都是一個(gè)意思.簡單的來說就是不使用new來實(shí)例化獲取對象,而是使用spring工具類的getBean()方法去獲取調(diào)用(依賴)對象.詳細(xì)點(diǎn)的: 一、首先說什么是依賴. 對于兩個(gè)相對獨(dú)立的對象,當(dāng)一個(gè)對象負(fù)...
徐水縣復(fù)合: ______ 都可以,不過一般是注入service
徐水縣復(fù)合: ______ 依賴注入是spring框架中的解耦的一種策略,稱為DI或IOC(控制反轉(zhuǎn)),主要有set方式(提供set和get方法)和constractor(構(gòu)造方法)方式,它使得類與類之間以配置文件的形式組織在一起,而不是硬編碼的方式,例如classA 中用到了classB如果寫代碼的話是new 一個(gè)classB,而用依賴注入的方式則是在applicationContext.xml里面寫兩個(gè) <bean id="id1" class="A"><property name="B" ref="id2"></bean> <bean id="id2" class="B"></bean>,就是在類A里原來需要new 的地方就不需要寫了,
徐水縣復(fù)合: ______ 依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念.具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用...
徐水縣復(fù)合: ______ 首先這就要談到一個(gè)概念叫做IOC或者也可以叫做DI,只是相同事件不同角度的描述,DI(依賴注入)是實(shí)現(xiàn),IOC(控制反轉(zhuǎn))是思想.通常情況下,我們創(chuàng)建一個(gè)類的實(shí)例對象都是自己new類的構(gòu)造方法,自行創(chuàng)建一個(gè)對象,但是控制反轉(zhuǎn)不...