spring中xml配置和autowired混用


1.類的混用:

配置文件中的配置:

<bean id="a" class="com.ab.cc.A" />

類中的配置

@Autowired

A a;

這樣的好處,可以少掉get/set方法

2.@Autowired和@Resource的區別

Autowired默認是根據byType自動裝配,所以有多個類型的xml或者注解某個類的時候,會報錯,這時候可以再添加@Qualifier注解,指定名稱.這個是spring自帶的,換框架的時候,要spring;

@Autowired
@Qualifier("userServiceImpl")
public IUserService userService;

或者

@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
 this.userDao = userDao;
}

Resource默認是根據byName自動裝配,這個是java自帶的,換框架的時候,不需要spring.

@Resource

private Car car;

3.在xml配置文件中,前面的<context:component-scan />配置,會被后面的<bean id=""/>配置覆蓋,假如有相同配置的話

4.除了xml和注解兩種配置bean的方式,還有一種spring3.0以后才支持的通過JavaConfig配置:

@Configuration
public class Conf {
    @Scope(“prototype”)
    @Bean(“loginUserDao”)
    public LoginUserDao loginUserDao() {
        return new LoginUserDao();
    }
}

在標注了@Configuration的java類中,通過在類方法標注@Bean定義一個Bean。方法必須提供Bean的實例化邏輯。通過@Bean的name屬性可以定義Bean的名稱,未指定時默認名稱為方法名。在方法處通過@Autowired使方法入參綁定Bean,然后在方法中通過代碼進行注入;也可以調用配置類的@Bean方法進行注入。通過@Bean的initMethod或destroyMethod指定一個初始化或者銷毀方法。通過Bean方法定義處標注@Scope指定Bean的作用范圍。通過在Bean方法定義處標注@Lazy指定Bean的延遲初始化。當實例化Bean的邏輯比較復雜時,則比較適合基於Java類配置的方式。

 

總結:不同配置方式比較

 

我們來看一下不同配置方式在不同方面的使用

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM