1)在@Configuration註解的對象中使用@Bean將對象注入到Spring容器中可以使用的自動裝配方式
->1)@Value("value")對基本屬性複製
-->2)@Value("${配置文件中讀取}") 使用@Value+特定的表達式從配置文件中讀取數據並賦值
--->1)首先西加載配置文件
-->2)使用@Value("${配置文件中讀取}")表達式獲取配置文件中的數據
-->3)使用@Value(#{算數表達式}) 爲一個數值類型數據賦值
2)@Autiwired自動裝配
Spring利用依賴注入(DI),完成對ioc容器中各個組件的依賴關係賦值
-->1)@Autowired:自動注入,默認優先按照類型去容器中去找對應的組件,如果容器中有多個相同類型的組件,再將屬 性名稱作爲組件的id去查找
和@Qualifier(“id”)組合使用:指定需要裝配的組件id,而不是屬性名
注:自動裝配默認一定要將屬性賦值好,沒有就會報錯但是也可以使用@Autowired(required=false)解決:如果容器中沒 有組件那麼賦的值就會爲null
-->2)@Primary:讓Spring自動裝配的時候使用首選的Bean
也就是說如果容器中找到對個相同組件那麼就會優先使用@Primary註解的Bean,而@Qualifier(“id”)不能和這個註解一起 用
-->3)@Resorce(JSR250)和@Inject(JSP350)[java規範註解]
可以和@Autowired一樣實現自動裝配,默認按照使用名稱裝配,可是使用@Resorce(name=”xxx”),沒有能支持 @Primary和@Autowired(required=false)的功能
@Inject:需要導入javax.inject的包,和Autowired的功能一樣但不支持 @Autowired(required=false)的功能
@Autowired是Spring的規範,@Resorce和@Inject是java規範
@Autowired能放的位置有構造器、參數、方法、屬性
標註在構造器上的@Autowired如果組件只有一個有參構造器,這個有參構造器的@Autowited可以省略
-->4)自定義組件如果想要使用Spring容器底層的一些組件(ApplicationContext,BeanFactory....)可以自定義一個對象之後實現 xxxAware,該功能是在創建對象的時候會調用接口規定的方法注入相關主鍵,把Spring底層的一些組件注入到自定義 Bean中去,入想使用ApplicationContext可以實現ApplicationContextAware之後實現方法再注入即可
@Profile:spring爲我們提供的可以根據當前環境動態的激活和切換一系列組件的功能
多數據源演示
多數據源的使用
添加環境標示
環境激活方式
--1):使用命令行動態參數,在虛擬機參數位置加載-Dspring.profiles.active=test(激活test環境)
--2)代碼激活環境
@profile不僅可以寫在@Bean那還可以寫在類上
沒有標示的bean在任何環境下都會加載到容器中