乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spring 注解配置(2)

       神志屋 2017-10-11

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

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

      <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 }

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

       

      UserRepositoryImps.java

      復(fù)制代碼
       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 }
      復(fù)制代碼

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

       

      UserService.java

      復(fù)制代碼
       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     @Autowired
      12     private UserRepository userRepository;
      13     
      14     public void save(){
      15         userRepository.save();
      16     }
      17 }
      復(fù)制代碼

      這里需要一個UserRepository類型的屬性,通過@Autowired自動裝配方式,從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的原理是什么?

        其實在啟動spring IoC時,容器自動裝載了一個AutowiredAnnotationBeanPostProcessor后置處理器,當容器掃描到@Autowied、@Resource或@Inject時,就會在IoC容器自動查找需要的bean,并裝配給該對象的屬性

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

        

       注意事項:

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

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

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

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

       

      舉例說明:

       在上面例子中,我們在定一個類來實現(xiàn)UserRepository接口

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

        這時在啟動容器后,在容器中有兩個UserRepository類型的實例,一個名稱為userRepository,另一個為userJdbcImps。在UserService中

      @Autowired
      private UserRepository userRepository;

        輸出結(jié)果:UserRepositoryImps save

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

       

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

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

      輸出結(jié)果:UserJdbcImps save

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多