IoC 依賴查找
- 根據Bean名稱查找
- 根據Bean類型查找
- 根據Bean名稱 + 類型查找
- 根據Java注解查找
private static void lookupByAnnotation(BeanFactory beanFactory) {
if (beanFactory instanceof ListableBeanFactory) {
ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
Map<String, User> users = (Map) listableBeanFactory.getBeansWithAnnotation(Super.class);
System.out.println("查找到的所有@Super的User集合對象:" + users);
}
}
private static void lookupByCollection(BeanFactory beanFactory) {
if (beanFactory instanceof ListableBeanFactory) {
ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
Map<String, User> users = listableBeanFactory.getBeansOfType(User.class);
System.out.println("查找到的所有User集合對象:" + users);
}
}
private static void lookupByType(BeanFactory beanFactory) {
User user = beanFactory.getBean(User.class);
System.out.println("實時查找:" + user);
}
private static void lookupInLazy(BeanFactory beanFactory) {
ObjectFactory<User> objectFactory = (ObjectFactory<User>) beanFactory.getBean("objectFactory");
User user = objectFactory.getObject();
System.out.println("延遲查找:" + user);
}
private static void lookupInRealTime(BeanFactory factory) {
User user = (User) factory.getBean("user");
System.out.println("實時查找:" + user);
}
IoC 依賴注入
- 根據Bean名稱注入
- 根據Bean類型注入
- 注入容器内建Bean對象
- 注入非Bean對象
- 注入類型
<bean id="userRepository"
class=" org.example.ioc.overview.repositary.UserRepository"
autowire="byType">
<!-- 開啟 Auto-Wring 自動注入 -->
<!-- 寫死、手動配置 -->
<!-- <property name="users">-->
<!-- <util:list>-->
<!-- <ref bean="user"/>-->
<!-- <ref bean="superUser" />-->
<!-- </util:list>-->
<!-- </property>-->
</bean>
IoC 依賴來源
- 自定義Bean
- 容器内建Bean對象
- 容器内建依賴
IoC 配置元資訊
- Bean 定義配置
- 基于 XML 檔案
- 基于 Properties 檔案
- 基于 Java 注解
- 基于 Java API
- IoC 容器配置
- 基于 XML 檔案
- 基于 Java 注解
- 基于 Java API
- 外部化屬性配置