您好,登錄后才能下訂單哦!
今天小編給大家分享一下Spring的@Bean注解怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Spring @Bean注解應用于方法上,指定它返回一個由 Spring 上下文管理的 bean。Spring Bean 注解通常在配置類方法中聲明。在這種情況下,bean 方法可以通過直接調用它們來引用同一類中的其他@Bean方法。
假設我們有一個簡單的類,如下所示。
package com.journaldev.spring;public class MyDAOBean { @Override public String toString() { return "MyDAOBean"+this.hashCode(); } }
這是一個配置類,我們為類定義了@Bean方法MyDAOBean。
package com.journaldev.spring;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; @Configurationpublic class MyAppConfiguration { @Bean public MyDAOBean getMyDAOBean() { return new MyDAOBean(); } }
我們可以MyDAOBean使用下面的代碼片段從 Spring 上下文中獲取 bean。
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.scan("com.journaldev.spring"); context.refresh(); //Getting Bean by ClassMyDAOBean myDAOBean = context.getBean(MyDAOBean.class);
我們可以指定@Bean名稱并使用它從 spring 上下文中獲取它們。假設我們將MyFileSystemBean類定義為:
package com.journaldev.spring;public class MyFileSystemBean { @Override public String toString() { return "MyFileSystemBean"+this.hashCode(); } public void init() { System.out.println("init method called"); } public void destroy() { System.out.println("destroy method called"); } }
現在在配置類中定義一個@Bean方法:
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})public MyFileSystemBean getMyFileSystemBean() { return new MyFileSystemBean(); }
我們可以通過使用 bean 名稱從上下文中獲取這個 bean。
MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");
我們還可以指定spring bean的init方法和destroy方法。這些方法分別在創建 spring bean 和關閉上下文時調用。
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")public MyFileSystemBean getMyFileSystemBean() { return new MyFileSystemBean(); }
你會注意到,當我們調用上下文方法時會調用“init”方法,而當我們調用上下文refresh方法時會調用“destroy”close方法。
以上就是“Spring的@Bean注解怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。