如何使用?
第一步:在类或方法的前面加上注解关键字
第二步:引入约束,注意此处约束多了xmlns:context...
第三步:添加配置文件,告知 Spring 在创建容器时要扫描的包,配置所需的标签不是在bean
约束中,而是一个名称为context
的名称空间和约束中
<context:component-scan base-package="要扫描的包"></context:component-scan>
Spring中ioc的常用注解
用于创建对象的
作用:等同于 xml 配置文件中编写一个 标签
@Component
形式:@Component(value=" ")/@Component(" ")
作用:用于把当前类对象存入 Spring 容器中
属性:
value : 用于指定 bean 的 id,当我们不写的时候,它的默认值是当前类名,且首字母改小写
当值只有一个的时候可以省略
以下三个注解的作用与 @Component 完全一样,它们是 Spring 提供的更明确的划分,使三层对象更加清晰
@Controller 用于表现层
@Service 用于业务层
@Repository 用于持久层
用于注入数据的
作用:等同于在标签中写一个标签
@Autowired
作用:自动按照类型注入
只要容器中有唯一的一个 bean 对象类型和要注入的变量类型匹配, 就可以注入成功;
如果IOC容器中没有任何 bean 的类型和要注入的变量类型匹配,则报错。
出现位置:可以是变量上,也可以是方法上,
细节:在使用注解注入时,set 方法就不是必须的了
@Qualifier
作用:在按照类型注入的基础上再按照名称注入;
它在给类成员注入时不能单独使用
但是在给方法参数注入时可以。
属性:
value : 用于指定注入的 bean 的 id
@Resource
作用:直接按照 bean 的 id 注入,可以直接使用
属性:
name : 用于指定 bean 的 id
等同于@Autowired+@Qualifier
以上三个注入都只能注入其他 bean 类型的数据,而基本类型和 String 类型的数据无法使用上述注解实现。另外,集合类型的注入只能通过 xml 配置文件实现
@Value
作用:用于注入基本类型和 String 类型的数据
属性:
value : 用于指定数据的值,它可以使用 Spring 中 Spel (即spring的el表达式)
Spel 的写法:${表达式}
用于改变范围的
等同于在 标签中使用 scope 属性
@Scope
作用:用于指定 bean 的作用范围
属性:
value : 指定范围的取值,同 xml 中值,常用为 singleton , prototype
和生命周期相关(了解)
作用:等同于在标签中使用 init-method
和 destroy-method
@PreDestory
作用:用于指定销毁方法
@Postcontrust
作用:用于指定初始化方法