spring中基于IOC容器对bean进行管理
2021-04-19 18:05
162 查看
spring中基于IOC对bean进行管理
[/ul]1.IOC容器的两种实现方式
- IOC(控制反转)底层主要是通过xml解析,反射,工厂模式实现的
- IOC容器是基于IOC的具体是实现,可以把IOC容器理解成一个对象工厂
spring框架对IOC容器的实现提供了两个两个接口,一个是BeanFactory接口,另一个是BeanFactory的子接口ApplicationContext接口
通过实现这两个接口,并加载配置文件,从而完成对象的创建
区别:
BeanFactory接口:
- 是Spring内部的使用接口,不提供开发人员进行使用是
- 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
ApplicationContext接口:
- BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
- 加载配置文件时候就会把在配置文件对象进行创建,这样的目的是在项目启动的时候就把对象创建好,节约了资源,减少开销;
2.Bean对象的管理
Bean对象的管理包含两个方面:
- 对象的创建
- 注入属性
(1)基于xml配置文件(略写)
对象创建:
注意:
- 创建对象默认是执行无参构造方法完成对象创建
- id属性是该对象的名称(是唯一标识),class是该类的全类名
属性注入:
可以通过
set方法和
有参构造方法两种方式实现
(2)基于注解方式(常用)
1.其中对象创建的注解包括以下4个
@Component
@Controller
@Service
@Repository
这4个注解功能一样,都是为了创建对象,
这样做的目的是:在不同的模块中使用不同的注解,方便程序员阅读
在注解中value属性值可以不写,默认是类名小写,类比xml中的id,
如果我们不想要默认值,可以自己设置;
//<bean id="userService" class=".."/> @Component(value = "userService") public class UserService { public void add() { System.out.println("service add......."); } }
2.属性注入有以下4个注解
@Autowired
@Qualifier
@Resource
@Value
以下三个注解是针对
属性是类的情况:
@Autowired 是根据属性的类型进行注入
@Service public class UserService { //定义dao类型属性 //不需要添加set方法 //添加注入属性注解 @Autowired private UserDao userDao; public void add() { System.out.println("service add......."); userDao.add(); }}
@Qualifier 是根据属性的名字进行注入
@Resource 即可属性的类型进行注入,也可根据属性的名字进行注入
该注解是针对属性是普通类型,比如String,int…
@Value
@Value(value = "abc") private String name;
注意:
@Resource注解是javax扩展包中的,它不是spring框架中的,官方不推荐使用
@Autowired和@Qualifier一般一起使用;因为@Autowired注解根据属性类型注入可能会报错;
如果UserDao接口有多个实现类都被创建,此时我们使用@Autowired给UserDao注入时,spring不知道该把哪一个实现类注入,因此会报错;
解决办法:
通过@Qualifier注解,在value中写明对象的名称
@Autowired @Qualifier(value = "userDaoImpl1") private UserDao userDao;
相关文章推荐
- Spring IOC容器装配Bean_基于注解配置方式
- Spring动态获取IoC容器中管理的Bean
- Spring IOC容器装配Bean_基于注解配置方式
- spring的IOC 容器管理 Bean
- Spring动态管理IoC容器中的Bean
- bean是如何装载到Spring IOC容器的(基于Spring boot)
- Spring IOC使用(3) 基于注解管理bean
- Spring IOC容器装配Bean_基于XML配置方式
- 小白第五篇 Spring IoC容器对于Bean的管理浅谈
- Spring动态获取IoC容器中管理的Bean
- Strategy 策略模式 在 Spring 开发中的应用 包括事务管理,日志管理(logger),IoC容器根据bean定义的内容实例化等
- Spring动态获取IoC容器中管理的Bean
- 通过DefaultListableBeanFactory加载.xml配置文件学习Spring-IoC容器注册/加载bean的机制(源码走读)
- spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- 《Spring揭秘》第四章 读书笔记 —— Spring的IoC容器之BeanFactory
- 传智播客 Spring中bean的实例化方式与IOC容器总结
- spring接口 BeanFactoryAware,动态获取IOC容器里面的对象(多例)
- Spring源码学习笔记之基于ClassPathXmlApplicationContext进行bean标签解析
- Spring容器对Bean组件的管理
- spring在IoC容器中装配Bean详解