天天看點

重識Spring架構(3)

Spring2.5 IoC注解加xml

  1. xml配置掃描包路徑:context:componet-scan base-packege="com.qiyang."
  2. 注解包括:@Controller @Service @Componet @Repository
  3. XML可設定排除注解掃描,也可以設定排除某些包,還可以按類的完整限定名排除、切面表達式、正規表達式、自定實作等等
  4. bean的名字:自動将類名首字母小寫
  5. 依賴注入屬性的值:@Value("admin") , 支援${jdbc.uri}擷取外部資源屬性 #{role.name} spEL表達式
  6. 自動注入:@Autowired 預設根據類型去比對,比對兩個時,根據再根據名字去比對,兩個都比對不上則報錯
  7. 自定義bean名稱:@Service("userXxxService")
  8. 設定注入的名稱:@Qualifier("userServiceImpl")
  9. 設定自動注入的bean為主要的bean:@Primary
  10. 使用泛型作為注入的bean:應用場景(公共增删改查),public interface BaseService<T>
  11. @Autowired 可以加在方法的參數上,原理和使用與加在普通屬性一緻
  12. @Resource也可以注入bean,來自jdk,相比@Autowired差別,其是優先根據名稱比對,再根據類型比對
  13. @DependsOn("user") 讓user先于Role加載,有些情況下可以改變bean的加載順序
  14. @Lazy 讓bean懶加載,使用的時候才會被加載
  15. @Scope("") 預設單例 需要時可以将其設定為prototype
  16. 生命周期回調:@PostConstruct 初始化回調 @PreDestory 銷毀回調

JavaConfig注入Bean

  1. Springboot完全采用JavaConfig方式,在Spring3~4以後逐漸成為核心類
  2. 注解@Configuration相當于一個xml配置,并且已有<beans>
  3. 掃描包:@ComponentScan 配置掃描包路徑
  4. 加載Spring上下文:new AnnotationConfigApplicationContext(IoCJavaConfig.class)
  5. 配置第三方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的形式
  1. 通過@PropertySource("classpath:jdbc.properties")可以擷取外部資源檔案屬性,可指定多個
  2. 通過@Import (XxxxJavaConfig.class) 導入其他JavaConfig類,支援多個
  3. 主JavaConfig中預設即可在方法參數中使用外部bean,内部 bean依賴直接調用方法即可
  4. 擴充用法1:@Import 還可以将類注冊為bean
  5. 擴充用法2:實作ImportSelector接口,重寫selectImports方法,傳回一個字元串數組,字元串寫類的完全限定名,也可以将類注冊成bean,注意要将此實作類加@Component即可,還有就是擷取時,隻能通過類型擷取,不能通過名字擷取
  6. 擴充用法3:實作ImportBeanDefinitionRegistrar,重寫registerBeanDefinitions方法,通過registry bean定義參數注入bean,可以對bean起名字
好了,本期内容就是這麼多,希望能夠幫助到您,感謝您能讀到最後,如果覺得内容不錯,請您點贊轉發給予鼓勵,咱們下期再見。