生活随笔
收集整理的這篇文章主要介紹了
SpringBoot-@Configuration
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
-
-
- 配置 類(lèi)組件之間無(wú)依賴(lài)關(guān)系用Lite模式加速容器啟動(dòng)過(guò)程,減少判斷
- 配置類(lèi)組件之間有依賴(lài)關(guān)系,方法會(huì)被調(diào)用得到之前單實(shí)例組件,用Full模式
#############################Configuration使用示例######################################################
/*** 1、配置類(lèi)里面使用@Bean標(biāo)注在方法上給容器注冊(cè)組件,默認(rèn)也是單實(shí)例的* 2、配置類(lèi)本身也是組件* 3、proxyBeanMethods:代理bean的方法* Full(proxyBeanMethods = true)、【保證每個(gè)@Bean方法被調(diào)用多少次返回的組件都是單實(shí)例的】* Lite(proxyBeanMethods = false)【每個(gè)@Bean方法被調(diào)用多少次返回的組件都是新創(chuàng)建的】* 組件依賴(lài)必須使用Full模式默認(rèn)。其他默認(rèn)是否Lite模式****/
@Configuration(proxyBeanMethods = false) //告訴SpringBoot這是一個(gè)配置類(lèi) == 配置文件
public class MyConfig {/*** Full:外部無(wú)論對(duì)配置類(lèi)中的這個(gè)組件注冊(cè)方法調(diào)用多少次獲取的都是之前注冊(cè)容器中的單實(shí)例對(duì)象* @return*/@Bean //給容器中添加組件。以方法名作為組件的id。返回類(lèi)型就是組件類(lèi)型。返回的值,就是組件在容器中的實(shí)例public User user01(){User zhangsan = new User("zhangsan", 18);//user組件依賴(lài)了Pet組件zhangsan.setPet(tomcatPet());return zhangsan;}@Bean("tom")public Pet tomcatPet(){return new Pet("tomcat");}
}################################@Configuration測(cè)試代碼如下########################################
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.leon.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、com.leon.boot.config.MyConfig$$EnhancerBySpringCGLIB$$51f1e1ca@1654a892MyConfig bean = run.getBean(MyConfig.class);System.out.println(bean);//如果@Configuration(proxyBeanMethods = true)代理對(duì)象調(diào)用方法。SpringBoot總會(huì)檢查這個(gè)組件是否在容器中有。//保持組件單實(shí)例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("用戶(hù)的寵物:"+(user01.getPet() == tom));}
}
總結(jié)
以上是生活随笔為你收集整理的SpringBoot-@Configuration的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。