IoC 依赖查找
- 根据Bean名称查找
- 实时查找
- 延迟查找
- 根据Bean类型查找
- 单个Bean对象
- 集合Bean对象
- 根据Bean名称 + 类型查找
- 根据Java注解查找
- 单个Bean对象
- 集合Bean对象
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对象
- 注入非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
-
外部化属性配置
- 基于 Java 注解