阅读 155

spring中基于IOC容器对bean进行管理

spring中基于IOC对bean进行管理

  • 1.IOC容器的两种实现方式

    • (1)基于xml配置文件(略写)

    • (2)基于注解方式(常用)

    • 2.Bean对象的管理


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;


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐