在使用spring注解之前需要在Bean.xml文件中告知spring在创建容器时要扫描的包,并且需要将原有的beans改成context名称空间和约束
#告诉Spring要扫描哪些包上的注解
<context : component-scan base-package="包地址"></context : component-scan>
在bean.xml中加上上面的那个标签就可以使用spring注解了
用于创建对象的
他们的作用就和在XML配置文件中编写一个标签实现的功能是一样的
@Component
//value可以不写
@Component(value="自己定义的这个类对象名称")
位置:类的前面
作用:把当前的类对象存入spring容器中
属性:value 用于指定bean的id 。当我们不写时,默认值是当前类名,且首字母改成小写。
@Controller(表现层) 、 @Service(业务层) 、@Repository(持久层dao)
这三个继承自Component
这三个注解的作用与属性和Component一样,他们是Spring框架为我们提供的三层使用的注解。
用于注入数据的
他们的作用就和在xml配置文件中的bean标签中写一个标签的作用是一样的
@Autowired
作用: 自动按照类型注入。只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功出现位置:
位置:可以是变量上,也可以是方法上
如果ioc容器中没有任何bean的类型和要注入的变量类型匹配,则报错。
使用注解时,set方法就不是必须的了
SpringIOC容器里面是Key / value 结构,key是类的对象名 , value是类的信息。
@Qualifier
作用:在按照类中注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用。但是在给方法参数注入的时候可以单独使用。
属性:用于指定注入bean的id,Component注解的value值
@Resource
作用: 直接按照bean的id注入。它可以独立使用属性:
属性: name:用于指定bean的id , Component注解的value值
@value
作用 : 用于注入基本类型和String类型的数据属性:
属性 : value:用于指定数据的值。它可以使用spring中spEL(也就是spring的el表达式)
SpEL的写法:${表达式}
用于改变作用范围的
他们的作用集合在bean标签中使用scope属性实现的功能是一样的
@Scope
作用 : 用于指定bean的作用范围
属性 : value:指定范围的取值。常用取值: singleton(单例) prototypd(多例)默认单例
和生命周期相关
他们的作用就和在bean标签中使用init-method和destroy-methode的作用是一样的
@PreDestroy
作用:用于指定销毁方法
@PostConstruct
作用:用于指定初始化方法
推荐阅读:Spring注解详解