<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上一篇中瞭解到了@Configuration
,可以註冊元件。除此之外,還有許多註解也可以,用法跟之前學習 spring 的時候一樣。
比如,@Bean
、@Component
、@Controller
、@Service
、@Repository
等。
這篇介紹另外一種給容器新增元件的方法:@Import
註解,給容器中匯入元件。
@Import
的用法很簡單,放在任意設定類或者元件裡面都可以。
另外,它還是陣列,所以可以匯入多個元件。比如:
@Import({User.class, DBHelper.class}) @Configuration(proxyBeanMethods = false) public class MyConfig { @Bean("user1") public User user01(){ User pingguo = new User("pingguo",20); pingguo.setPet(tomcatPet()); return pingguo; } @Bean("pet1") public Pet tomcatPet(){ return new Pet("tomcat"); } }
這裡匯入了 2 個元件,分別是User.class
和DBHelper.class
。
其中 User.class
是之前我自定義的類,而DBHelper.class
是隨便找的一個第三方包下的類。
寫好之後,@Import
就可以給容器中自動建立出這 2 個型別的元件。
驗證一下,容器中是否存在上述的 2 個元件。
程式碼還是加在 main 方法裡,把全部程式碼放出來,方便後續檢視。
// 標記這是一個 springboot應用,這個類是主程式類,所有啟動的入口 @SpringBootApplication(scanBasePackages = "com.pingguo") public class MainApplication { public static void main(String[] args) { // 返回IOC容器 final ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args); // 檢視容器裡的元件 final String[] beanDefinitionNames = run.getBeanDefinitionNames(); for (String name: beanDefinitionNames) { System.out.println(name); } // 從容器中獲取元件 MyConfig bean = run.getBean(MyConfig.class); System.out.println("設定類也是元件:" + bean); User user1 = bean.user01(); User user2 = bean.user01(); System.out.println(user1 == user2); // 依賴關係 User user01 = run.getBean("user1", User.class); Pet pet1 = run.getBean("pet1", Pet.class); System.out.println("依賴:" + (user01.getPet() == pet1)); // @Import 元件 String[] beanNamesForType = run.getBeanNamesForType(User.class); System.out.println("====獲取 User 型別的 bean ===="); for (String s : beanNamesForType) { System.out.println(s); } System.out.println("====獲取 DBHelper 型別的 bean ===="); DBHelper bean1 = run.getBean(DBHelper.class); System.out.println(bean1); } }
看最後// @Import 元件
相關的程式碼。
這裡因為之前學習中註冊過多個 User 型別的元件,所以遍歷一下列印輸出。
執行結果中,可以看到有2個 User 型別的 bean,分別是user1
和com.pingguo.boot.bean.User。
對於user1
,是之前使用@bean
註冊的。
而對於com.pingguo.boot.bean.User,則是這次使用Import
匯入進去的,預設元件名是全類名。
最後一個ch.qos.logback.core.db.DBHelper@4943defe,這是匯入的第三方的包的類,成功在容器中註冊了元件。
以上就是SpringBoot2底層註解@Import用法詳解的詳細內容,更多關於SpringBoot2註解@Import的資料請關注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