av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺析Spring IOC 依賴查找你需要知道的幾種方式

瀏覽:4日期:2023-12-03 08:43:45
目錄1. 根據(jù) Bean 名稱查找實(shí)時(shí)查找延時(shí)查找2. 根據(jù) Bean 類型查找單個(gè) Bean 對(duì)象集合 Bean 對(duì)象3. 根據(jù) Bean 類型 + 名稱查找

首先,我們創(chuàng)建一個(gè)包含 spring-context 依賴的 maven 項(xiàng)目,然后定義一個(gè) User.class

public class User { private long id; private String name; public long getId() {return id; } public void setId(long id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } @Override public String toString() {return 'User{' +'id=' + id +', name=’' + name + ’’’ +’}’; } }

在 resources 目錄下,創(chuàng)建 dependency-look-up.xml 配置文件

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd'> <bean class='org.example.overview.dependency.domain.User'><property name='id' value='1'/><property name='name' value='彭于晏'/> </bean> <bean parent='user' primary='true'><property name='address' value='杭州'/> </bean> <bean class='org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean'><property name='targetBeanName' value='user'/> </bean></beans>1. 根據(jù) Bean 名稱查找實(shí)時(shí)查找

實(shí)時(shí)查找的意思就是說(shuō)直接獲取 beanFactory, 通過(guò) beanFactory 獲取 user 對(duì)應(yīng)的 bean,代碼如下所示

BeanFactory beanFactory = new ClassPathXmlApplicationContext('classpath:/META-INF/dependency-look-up.xml');// 這里的 “user” 就是 xml 文件中的 id,即名稱實(shí)時(shí)查找User user = (User) beanFactory.getBean('user');System.out.println('實(shí)時(shí)加載: ' + bean);延時(shí)查找

這里的延遲就是說(shuō),通過(guò)其他的對(duì)象來(lái)獲取 user 對(duì)應(yīng)的 Bean,代碼如下所示:

ObjectFactory<User> objectFactory = (ObjectFactory<User>) beanFactory.getBean('objectFactory');User user = objectFactory.getObject();System.out.println('延遲加載' + user);2. 根據(jù) Bean 類型查找

這里的類型指的就是 user.class

單個(gè) Bean 對(duì)象

User bean = beanFactory.getBean(User.class);集合 Bean 對(duì)象

if(beanFactory instanceof ListableBeanFactory){ ListableBeanFactory listableBeanFactory = (ListableBeanFactory)beanFactory; Map<String, User> beansOfType = listableBeanFactory.getBeansOfType(User.class); System.out.println('集合類型:' + beansOfType); }3. 根據(jù) Bean 類型 + 名稱查找4. 根據(jù) Java 注解查找

首先我們自定義一個(gè)注解 @Super

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface Super {}

將注解表示到 superUser 類中,這里的 superUser 繼承了 user 類

@Superpublic class SuperUser extends User { private String address; public String getAddress() {return address; } public void setAddress(String address) {this.address = address; } @Override public String toString() {return 'SuperUser{' +'address=’' + address + ’’’ +'} ' + super.toString(); }}

最后根據(jù) spring 提供的 api,獲取注解 bean

if(beanFactory instanceof ListableBeanFactory){ ListableBeanFactory listableBeanFactory = (ListableBeanFactory)beanFactory; Map<String, Object> beansOfType = listableBeanFactory.getBeansWithAnnotation(Super.class); System.out.println('查找 @super 的:' + beansOfType); }

到此這篇關(guān)于淺析Spring IOC 依賴查找你需要知道的幾種方式的文章就介紹到這了,更多相關(guān)Spring IOC 依賴查找內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 午夜美女福利视频 | 国产精品无遮挡 | 亚洲福利精品 | 黄色片视频免费 | 成人三级视频 | 久久视频一区二区 | 91在线一区二区 | 中文字幕亚洲天堂 | 国产裸体永久免费视频网站 | 欧美精品久久99 | 国产福利视频 | 亚洲国产精品久久久 | 国产欧美一区二区精品性色超碰 | 国产精品久久久久久久久 | 高清一区二区三区 | 日韩精品极品视频在线观看免费 | 日本不卡视频在线观看 | 国产www视频 | 免费观看毛片 | 爱福利视频 | av手机在线 | 青草视频在线 | 日本婷婷 | 国产精品美女毛片真酒店 | 欧美一区三区 | 日韩不卡在线观看 | 日韩不卡一区二区 | 日产毛片 | 永久黄网站色视频免费观看w | 成人a在线 | 成人看片免费 | 久草成人| 欧美日韩亚洲国产 | 天天操操操 | 国产黄色在线播放 | 一级免费黄色片 | 超碰人人网 | 视频在线一区二区 | 亚洲 欧美 综合 | 亚洲一区高清 | 一级做a爱片性色毛片 |