国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:6日期:2023-12-03 08:43:45
目錄1. 根據 Bean 名稱查找實時查找延時查找2. 根據 Bean 類型查找單個 Bean 對象集合 Bean 對象3. 根據 Bean 類型 + 名稱查找

首先,我們創建一個包含 spring-context 依賴的 maven 項目,然后定義一個 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 目錄下,創建 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. 根據 Bean 名稱查找實時查找

實時查找的意思就是說直接獲取 beanFactory, 通過 beanFactory 獲取 user 對應的 bean,代碼如下所示

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

這里的延遲就是說,通過其他的對象來獲取 user 對應的 Bean,代碼如下所示:

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

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

單個 Bean 對象

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

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

首先我們自定義一個注解 @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(); }}

最后根據 spring 提供的 api,獲取注解 bean

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

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 久久99精品国产免费观看 | 91久热| 国产精品hd在线播放 | 成人a视频片在线观看免费 成人a视频在线观看 | 亚洲精品国产成人专区 | 成人看片黄a在线看 | 亚洲人在线播放 | 黄色毛片免费在线观看 | 美女扒开双腿让男人爽透视频 | 精品国产一区二区三区www | 国产一级做a爰片久久毛片99 | 国产一区二区精品久 | 欧美日本综合一区二区三区 | 韩国福利影视一区二区三区 | 亚洲综合无码一区二区 | 欧美综合自拍亚洲综合 | 91成人在线免费观看 | 国产精品福利视频萌白酱 | 国产a国产 | 三a大片| 免费看成人毛片日本久久 | 一及 片日本 | 福利片成人午夜在线 | 女女同性一区二区三区四区 | 欧美一级成人一区二区三区 | 亚洲高清色 | 99国产高清久久久久久网站 | 欧美成人看片黄a免费看 | 福利云| 欧美亚洲日本韩国一级毛片 | 国产韩国精品一区二区三区久久 | 久久精品国产亚洲a | 欧美成人免费高清二区三区 | 九九99久久 | 天堂资源8中文最新版在线 天堂最新版 | 请看一下欧美一级毛片 | 在线视频区 | 久久精品视频8 | 性色综合 | 国产亚洲精品自在久久77 | 国产一级毛片在线 |