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類配置的方式。

