Spring2.5 IoC注解加xml
- xml配置掃描包路徑:context:componet-scan base-packege="com.qiyang."
- 注解包括:@Controller @Service @Componet @Repository
- XML可設定排除注解掃描,也可以設定排除某些包,還可以按類的完整限定名排除、切面表達式、正規表達式、自定實作等等
- bean的名字:自動将類名首字母小寫
- 依賴注入屬性的值:@Value("admin") , 支援${jdbc.uri}擷取外部資源屬性 #{role.name} spEL表達式
- 自動注入:@Autowired 預設根據類型去比對,比對兩個時,根據再根據名字去比對,兩個都比對不上則報錯
- 自定義bean名稱:@Service("userXxxService")
- 設定注入的名稱:@Qualifier("userServiceImpl")
- 設定自動注入的bean為主要的bean:@Primary
- 使用泛型作為注入的bean:應用場景(公共增删改查),public interface BaseService<T>
- @Autowired 可以加在方法的參數上,原理和使用與加在普通屬性一緻
- @Resource也可以注入bean,來自jdk,相比@Autowired差別,其是優先根據名稱比對,再根據類型比對
- @DependsOn("user") 讓user先于Role加載,有些情況下可以改變bean的加載順序
- @Lazy 讓bean懶加載,使用的時候才會被加載
- @Scope("") 預設單例 需要時可以将其設定為prototype
- 生命周期回調:@PostConstruct 初始化回調 @PreDestory 銷毀回調
JavaConfig注入Bean
- Springboot完全采用JavaConfig方式,在Spring3~4以後逐漸成為核心類
- 注解@Configuration相當于一個xml配置,并且已有<beans>
- 掃描包:@ComponentScan 配置掃描包路徑
- 加載Spring上下文:new AnnotationConfigApplicationContext(IoCJavaConfig.class)
- 配置第三方bean:@Bean注解,方法級别注解,可以在@Configuration 或 @Conponent 注解的類下使用
public DruidDataSource dataSource(){
DruidDataSource ds = new DruidDataSource()
ds.setName("x")
// xxxx
return ds;
}
注意:
@Bean 是自己将bean執行個體化好了以後,交給IOC容器注冊成一個bean,其方式可以覆寫,通過@Component注冊的bean,自動将傳回值作為Bean的類型,方法名作為bean的name,可以name屬性設定bean的别名,可以幹預類的執行個體化過程。相比xml,替代了通過bean工廠配置初始化bean的形式
- 通過@PropertySource("classpath:jdbc.properties")可以擷取外部資源檔案屬性,可指定多個
- 通過@Import (XxxxJavaConfig.class) 導入其他JavaConfig類,支援多個
- 主JavaConfig中預設即可在方法參數中使用外部bean,内部 bean依賴直接調用方法即可
- 擴充用法1:@Import 還可以将類注冊為bean
- 擴充用法2:實作ImportSelector接口,重寫selectImports方法,傳回一個字元串數組,字元串寫類的完全限定名,也可以将類注冊成bean,注意要将此實作類加@Component即可,還有就是擷取時,隻能通過類型擷取,不能通過名字擷取
- 擴充用法3:實作ImportBeanDefinitionRegistrar,重寫registerBeanDefinitions方法,通過registry bean定義參數注入bean,可以對bean起名字
好了,本期内容就是這麼多,希望能夠幫助到您,感謝您能讀到最後,如果覺得内容不錯,請您點贊轉發給予鼓勵,咱們下期再見。