文章目录
一、常用注解
1.用于创建对象的注解Component
- 们的作用就和在XML配置文件中编写一个标签实现的功能是一样的
Component
:- 作用:用于把当前类对象存入spring容器中
- 属性:
- value:用于指定bean的id。当我们不写时,它的默认值是当前类名,且首字母改小写。
1.1使用步骤
- 首先在bean.xml配置中告知spring在创建容器时要扫描的包,配置所需要的标签不是在beans的约束中,而是一个名称为
context
名称空间和约束中 - 所以就需要先找到其相关约束,在文档中寻找
- xml文件配置
- bean类中添加注解
- 测试类
- 运行效果:成功创建对象
1.2用于创建对象的其他三个注解
- Controller:一般用在表现层
- Service:一般用在业务层
- Repository:一般用在持久层
- 以上三个注解他们的作用和属性与Component是一模一样。他们三个是spring框架为我们提供明确的三层使用的注解,使我们的三层对象更加清晰
2.用于数据注入的注解
2.1问题导入
- 为了解决上述的问题,就需要使用数据注入的注解
2.2 Autowired
- 作用:自动按照类型注入。只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功
- 如果ioc容器中没有任何bean的类型和要注入的变量类型匹配,则报错。
- 如果Ioc容器中有多个类型匹配时:
2.2.1基本使用步骤及效果
- 可以注解在方法上也可以注解在变量中
- 注解在方法上
2.2.2细节1:该注解是如何起作用的?
2.2.3细节2:如果没有对应的类型匹配呢?
AccountDaoImpl不再实现接口IAccountDao
2.2.3细节3:如果IOC容器中存在两个类同时实现同一个接口
- 错误情况
- 正确
- 分析
2.3 Qualifier
为了解决Autowired注解的变量对应的变量类型有两个实体类的情况
-
作用:在按照类中注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用,需要和
Autowired
一起使用。但是在给方法参数注入时可以(稍后我们讲) -
属性: value:用于指定注入
bean
的id
。 -
演示
2.4 Resource
- 作用:直接按照bean的id注入。它可以独立使用
- 属性:
- name:用于指定bean的id。
- name:用于指定bean的id。
2.5小结
- 以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现。
- 另外,集合类型的注入只能通过XML来实现。
2.6 Value:用于注入基本类型和String类型的数据
- 作用:用于注入基本类型和String类型的数据
- 属性:
- value:用于指定数据的值。它可以使用spring中SpEL(也就是spring的el表达式)
- SpEL的写法:${表达式}
2.7 Scope:用于指定bean的作用范围
-
作用:用于指定bean的作用范围
-
属性:
- value:指定范围的取值。常用取值:
singleton, prototype
- 默认取值为
singleton
- value:指定范围的取值。常用取值:
-
演示
-
默认范围
2.8 生命周期相关注解
- 作用就和在bean标签中使用init-method和destroy-methode的作用是一样的
- PreDestroy:用于指定销毁方法
- PostConstruct:用于指定初始化方法
- 注意:当bean为多例子时,销毁方法不起作用
- 演示