Spring常用注解:
用于创建对象:他们的作用就是和在xml配置文件中编写一个<bean>标签实现功能是一样的
用于注入数据:他们作用和在xml中的<bean>标签中写一个properties标签作用是一样的
用于改变作用范围:他们的作用集合在bean标签中使用scope属性属性实现功能是一样的
和生命周期相关:作用和在<bean>标签中使用init-method和destory-method的作用是一样的
1、用于创建对象的:
@Component:作用:用于把当前类对象存入Spring中,会把注解标识的类创建成一个对象,存入Spring中,
属性:用于指定bean的id,当我们不写时,他的默认值是当前类名,且首字母改小写
@Controller :一般用在表现层
@Service:一般用在业务层
@Repository:一般用在持久层
以上注解地作用和@Component是一模一样的,他们三个是Spring框架为我们提供明确的三层使用注解,使我们的三层对象更加清晰。
2、用于注入数据的:
@Autowried:作用:按照类型注入,只要容器中有唯一一个bean对象类型和要注入的变量类型匹配,就可以注入成功用于改变作用范围的,他们的作用就和在bean标签中使用scop属性实现的功能是一样的,如果容器中没有人任何bean类型和要注入的变量类型匹配,则报错。如果IOC容器中有多个类型匹配时,首先按照类型圈定出匹配对象,然后会使用变量名称,在圈定出的两个里面继续查找,如果有一样的,也可以注入成功。
出现位置:可以是成员变量上,也可以是方法上。
在使用注解注入时,set方法就不是必须的(SpringIOC容器是一个map结构)
那么就是两个bean相同时,改id
@Qualifier:作用:按照类中注入的基础上再按照名称注入,它在给类成员注入时不单独使用,但是在给方法注入时可以
属性:value,用于指定注入bean的id
@Resource:作用:直接按照bean的id注入,它可以独立使用
属性:name,用于指定bean的Id
以上三个注解都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现。 另外,集合类型的注入只能通过XML实现。
@Value :作用:用于注入基本类型和String类型的数据
属性:Value,用于指定数据的值,它可以使用Spring中的SpEl(也就是spring的el表达式)
SpEl的写法:${表达式}
用于改变作用域范围:
Scope:用于指定bean作用范围
属性:
value:指定范围的取值,常用取值,singleton,prototype
注:多例对象销毁Spring是不负责的
和生命周期相关:
PreDestroy:作用,用于指定销毁方法
PostConstruct:作用,用于指定初始化方法