Spring常用注解
首先 对应bean非注解过程 可分为:
- 用于创建对象的
- 用于注入数据的
- 用于改变作用范围的
- 和生命周期相关的
注解
首先要在bean.xml中告知spring在创建容器时要扫描的包的位置.配置的标签不在beans的约束中,而是在context名称空间和约束中 在spring官网搜索xmls:context 复制那段beans即可. 然后写<context:component-scan base-package="com.hk"></context:component-scan>
会扫描所有com.hk包下及子包的类的注解.
-
创建对象
< 1 > @Component :泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
属性:value:用于指定bean的id,当我们不写时,默认值是当前类名,首字母改小写.
< 2 3 4 > Controller Service Repository 这三个注解的作用和属性与Component是一模一样的. Spring提供的三层注解,使三层对象更清晰. 分别一般用于表现层,业务层,持久层 -
注入数据.
< 1 >Autowired:作用:自动按照类型注入,只要容器中有唯一一个bean对象类型和要注入的变量类型匹配.spring容器中以Map结构存储,如果ioc容器中没有任何类型和注入的变量类型匹配,则报错. 若有多个匹配时,首先按类型,找到匹配的对象,然后会用变量名称作为bean的ID再匹配的对象中去查找,若有同变量名相同的bean的ID,则找到,否则报错. 所以多个时,要通过改变量名去找.
常用的是写在变量上,也可以方法上
在使用注解注入时,set方法就不是必须的了.
< 2 >Qualifier:按照类中注入的基础之上再按照名称注入.它在给类成员注入时不能单独使用.(即要与Autowired配合使用,就相当于前面的Autowired根据类型框定了个范围,Qualifier再通过value找到对应的bean ID),但是在给方法参数注入时可以.
< 3 >Resource 直接按照bean的id注入,可以单独使用, 用属性name 指定bean ID.
---------------以上三个只能注入其他bean类型的数据,而基本类型和String类型无法实现-------
---------------另外,集合类型只能用XML来实现----------------
< 4 >Value :用于注入基本类型和String类型的数据.
属性: value :用于指定数据的值,它可以使用spring的SpEl(Spring中的EL表达式) $( 表达式) EL表达式根据位置的不同,访问不同的域. -
作用范围
Scope: 用于指定bean的作用范围.
value:指定范围的取值,常用取值: singleton prototype -
了解即可.
PreDestory : 在bean对象的销毁方法前加上@PreDestory 即可 下同.
PostConstruct: