免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Spring 注解配置(2)

版權(quán)聲明:本文為博主原創(chuàng)文章,如需轉(zhuǎn)載請(qǐng)標(biāo)注轉(zhuǎn)載地址。 博客地址:http://www.cnblogs.com/caoyc/p/5626365.html 

@Autowired 注釋,它可以對(duì)類成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。 通過 @Autowired的使用來消除 set ,get方法。在使用@Autowired之前,我們對(duì)一個(gè)bean配置起屬性時(shí),是這用用的

<property name="屬性名" value=" 屬性值"/>    

通過這種方式來,配置比較繁瑣,而且代碼比較多。在Spring 2.5 引入了 @Autowired 注釋

 

下面用案例來具體說明

UserRepository.java

1 package com.proc.bean.repository;2 3 public interface UserRepository {4     5     void save();6 }

這里定義了一個(gè)UserRepository接口,其中定義了一個(gè)save方法

 

UserRepositoryImps.java

 1 package com.proc.bean.repository; 2  3 import org.springframework.stereotype.Repository; 4  5 @Repository("userRepository") 6 public class UserRepositoryImps implements UserRepository{ 7  8     @Override 9     public void save() {10         System.out.println("UserRepositoryImps save");11     }12 }

定義一個(gè)UserRepository接口的實(shí)現(xiàn)類,并實(shí)現(xiàn)save方法,在這里指定了該bean在IoC中標(biāo)識(shí)符名稱為userRepository

 

UserService.java

 1 package com.proc.bean.service; 2  3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5  6 import com.proc.bean.repository.UserRepository; 7  8 @Service 9 public class UserService {10 11     @Autowired12     private UserRepository userRepository;13     14     public void save(){15         userRepository.save();16     }17 }

這里需要一個(gè)UserRepository類型的屬性,通過@Autowired自動(dòng)裝配方式,從IoC容器中去查找到,并返回給該屬性

 

applicationContext.xml配置

<context:component-scan base-package="com.proc.bean" />

 

測試代碼:

1 ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");2 3 UserService userService=(UserService) ctx.getBean("userService");4 userService.save();

輸出結(jié)果:UserRepositoryImps save

 

那么使用@Autowired的原理是什么?

  其實(shí)在啟動(dòng)spring IoC時(shí),容器自動(dòng)裝載了一個(gè)AutowiredAnnotationBeanPostProcessor后置處理器,當(dāng)容器掃描到@Autowied、@Resource或@Inject時(shí),就會(huì)在IoC容器自動(dòng)查找需要的bean,并裝配給該對(duì)象的屬性

 <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>  

  

 注意事項(xiàng):

  在使用@Autowired時(shí),首先在容器中查詢對(duì)應(yīng)類型的bean

    如果查詢結(jié)果剛好為一個(gè),就將該bean裝配給@Autowired指定的數(shù)據(jù)

    如果查詢的結(jié)果不止一個(gè),那么@Autowired會(huì)根據(jù)名稱來查找。

    如果查詢的結(jié)果為空,那么會(huì)拋出異常。解決方法時(shí),使用required=false

 

舉例說明:

 在上面例子中,我們?cè)诙ㄒ粋€(gè)類來實(shí)現(xiàn)UserRepository接口

package com.proc.bean.repository;import org.springframework.stereotype.Repository;@Repositorypublic class UserJdbcImps implements UserRepository {    @Override    public void save() {        System.out.println("UserJdbcImps save");    }}

  這時(shí)在啟動(dòng)容器后,在容器中有兩個(gè)UserRepository類型的實(shí)例,一個(gè)名稱為userRepository,另一個(gè)為userJdbcImps。在UserService中

@Autowiredprivate UserRepository userRepository;

  輸出結(jié)果:UserRepositoryImps save

  這里由于查詢到有兩個(gè)該類型的實(shí)例,那么采用名稱匹配方式,在容器中查找名稱為userRepository的實(shí)例,并自動(dòng)裝配給該參數(shù)。

 

  如果這里想要裝載userJdbcImps的實(shí)例,除了將字段userRepository名稱改成userJdbcImps外,可以提供了一個(gè)@Qualifier標(biāo)記,來指定需要裝配bean的名稱,代碼這樣寫

1 @Autowired2 @Qualifier("userJdbcImps")3 private UserRepository userRepository;

輸出結(jié)果:UserJdbcImps save

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring4新特性:泛型限定式依賴注入
UC頭條:[面試必問]Spring核心之控制反轉(zhuǎn)(IOC)
Spring IoC是如何進(jìn)行依賴注入的
阿里大牛解析——Spring微服務(wù)專題
Spring常用注解
Spring的四個(gè)基本注解annotation(控制層,業(yè)務(wù)層,持久層) -- @Component、@Repository @Service、@Controller
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服