<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
—— 放在類前註釋 用於表示設定類,設定類也是一個元件
@Configuration(proxyBeanMethods = true) // 設定類 == 組態檔 public class MyConfig { }
通過 proxyBeanMethods 很好的解決了元件依賴的問題 ——
測試元件依賴及測試類本身是元件
// 設定類本身也是一個元件 MyConfig bean = run.getBean(MyConfig.class); System.out.println(bean); run.getBean("user01", User.class); run.getBean("tom", Pet.class); System.out.println("使用者的寵物是不是容器中的寵物" + (user01.getPet() == tom01));
—— 放在方法前表示給容器中註冊元件 (單範例)
注:目前我對容器、元件的理解有限, 後期如果有更深入的理解,會更新此處
@Bean // 給容器中新增元件,方法名作為元件id, 返回型別是元件型別 , 返回的值是元件在容器中的範例 public User user01(){ User zangsan = new User("zangsan", 18); zangsan.setPet(tomcatPet()); return zangsan; }
測試是否註冊成功
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args); // 檢視容器裡的元件 String[] names = run.getBeanDefinitionNames(); for(String s: names){ System.out.println(s); }
—— 放在設定類前,用於匯入元件
@Import({User.class, DBHelper.class}) // 給容器中自動建立出這兩個型別的元件 @Configuration // 設定類 == 組態檔 public class MyConfig { }
測試匯入元件是否成功
DBHelper bean1 = run.getBean(DBHelper.class);
—— 用於註冊元件需要特定條件的情況
例如: 使用者需要寵物,若無寵物tom元件,不能註冊使用者元件
@ConditionalOnBean(name = "tom") // 表示有 tom 元件才能註冊 user01 元件 @Bean // 給容器中新增元件,方法名作為元件id, 返回型別是元件型別 , 返回的值是元件在容器中的範例 public User user01(){ User zangsan = new User("zangsan", 18); zangsan.setPet(tomcatPet()); return zangsan; }
測試
System.out.println("容器中是否含有寵物元件" + run.containsBean("tom")); System.out.println("容器中是否含有使用者元件" + run.containsBean("user01"));
繫結核心組態檔 (application.properities)
方法一:
@Component // 將元件加到容器中 @ConfigurationProperties(prefix = "mycar") // 設定屬性名
方法二:
// 功能一:開啟Car的屬性設定 // 功能二:把指定的元件匯入容器中 @EnableConfigurationProperties(Car.class)
測試類:
@Autowired Car car; @RequestMapping("/car") public Car car(){ System.out.println(car); return car; }
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration // 當前是一個設定類 @EnableAutoConfiguration @ComponentScan( // 指定掃描那些Spring註解 excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} )
@EnableAutoConfiguration
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage //——@Import({AutoConfigurationPackages.Registrar.class}) @Import({AutoConfigurationImportSelector.class})
核心註解1:
@AutoConfigurationPackage 利用Registrar給容器中批次註冊元件
—— 將指定包下的元件批次匯入 (MainAppliaction 包下)
核心註解2
@Import({AutoConfigurationImportSelector.class})
—— 利用 getAutoConfigurationEntry() 方法給容器中批次匯入元件
設定類位置
總結: SpringBoot 所有自動設定全部載入, 按照條件裝配 —— 匯入相關場景才能生效
到此這篇關於SpringBoot底層註解超詳細介紹的文章就介紹到這了,更多相關SpringBoot底層註解內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45