springboot自動配置註解的使用
阿新 • • 發佈:2021-05-01
1、元件新增
@Configuration
預設是Full模式
配置類元件之間無依賴關係用Lite模式加上容器啟動過程,減少判斷
配置元件之間有依賴關係,方法會被呼叫得到之前單例項元件,用Full模式
#############################Configuration使用示例######################################################
/**
* 1、配置類裡面使用@Bean標註在方法上給容器註冊元件,預設也是單例項的
* 2、配置類本身也是元件
* 3、proxyBeanMethods:代理bean的方法
* Full(proxyBeanMethods = true)、【保證每個@Bean方法被呼叫多少次返回的元件都是單例項的】
* Lite(proxyBeanMethods = false)【每個@Bean方法被呼叫多少次返回的元件都是新建立的】
* 元件依賴必須使用Full模式預設。其他預設是否Lite模式
*
*
*
*/
@Configuration(proxyBeanMethods = false) //告訴SpringBoot這是一個配置類 == 配置檔案
public class MyConfig {
/**
* Full:外部無論對配置類中的這個元件註冊方法呼叫多少次獲取的都是之前註冊容器中的單例項物件
* @return
*/
@Bean //給容器中新增元件。以方法名作為元件的id。返回型別就是元件型別。返回的值,就是元件在容器中的例項
public User user01(){
User zhangsan = new User("zhangsan" , 18);
//user元件依賴了Pet元件
zhangsan.setPet(tomcatPet());
return zhangsan;
}
@Bean("tom")
public Pet tomcatPet(){
return new Pet("tomcat");
}
}
################################@Configuration測試程式碼如下########################################
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.atguigu.boot")
public class MainApplication {
public static void main(String[] args) {
//1、返回我們IOC容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
//2、檢視容器裡面的元件
String[] names = run.getBeanDefinitionNames();
for (String name : names) {
System.out.println(name);
}
//3、從容器中獲取元件
Pet tom01 = run.getBean("tom", Pet.class);
Pet tom02 = run.getBean("tom", Pet.class);
System.out.println("元件:"+(tom01 == tom02));
//4、co[email protected]1654a892
MyConfig bean = run.getBean(MyConfig.class);
System.out.println(bean);
//如果@Configuration(proxyBeanMethods = true)代理物件呼叫方法。SpringBoot總會檢查這個元件是否在容器中有。
//保持元件單例項
User user = bean.user01();
User user1 = bean.user01();
System.out.println(user == user1);
User user01 = run.getBean("user01", User.class);
Pet tom = run.getBean("tom", Pet.class);
System.out.println("使用者的寵物:"+(user01.getPet() == tom));
}
}
@Import({User.class, DBHelper.class})
給容器中自動創建出這兩個型別的元件、預設元件的名字就是全類名
@Import({User.class, DBHelper.class})
給容器中自動創建出這兩個型別的元件、預設元件的名字就是全類名
@ImportResource(“classpath:beans.xml”)
引入bean.xml配置檔案
@[email protected](註解加在實體類上)
或者@EnableConfigurationProperties + @ConfigurationProperties(註解加在配置類上config)
讀取properties檔案中的內容,並且把它封裝到JavaBean中,以供隨時使用,@ConfigurationProperties(prefix = “mycar”)要指properties檔案的配置是以什麼開頭