Spring的常用标注
Posted Hero丶小卡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的常用标注相关的知识,希望对你有一定的参考价值。
组件扫描
什么是组件扫描
Spring框架提供了一套 基于注解(标注) 的组件创建 和 装配的技术。这项技术
可以大大的简化XML的配置。这套技术的名字叫组件扫描。
实现组件扫描的步骤
a.建立一个项目 导入jar包(ioc aop) 并拷贝 Spring容器对应的配置文件到src下
b.在Spring 容器对应的配置文件中 开启组件扫描
<context:component-scan base-package="包名" />
c.写一个实体类 在类上加对应的标注
@Component 通用层标注
如果直接加在类上 则组件的名字就是类名首字母小写 可以通过 value 属性来指定
名字,当然只有一个value属性时 value 可以省略。
@Repository 持久层标注
@Service 服务层标注
@Controller 控制层标注
d.创建Spring 容器对象 并从容器中获取对应的组件对象
1.组件扫描中 和 作用域 初始化 销毁等相关的标注
作用域 可以通过 @Scope("singleton|prototype")
初始化 可以通过 @PostConstruct
销毁 可以通过 @PreDestroy
2.和组件装配相关的标注
@Value 可以用在成员变量 set方法 上 用来解决简单值的注入问题 如果要注入复杂的对象
可以结合EL表达式完成。
@Autowired 可以用在成员变量 set方法 以及构造方法上 。
优先按照类型进行匹配 如果有两个及以上相同的类型 则启用名字进行匹配。
如果想指定名字进行查找 可以使用 @Qualifier("组件id")
使用 @Qualifier 不能加在构造方法上
@Autowired 默认对组件的依赖是强依赖(没有对应的组件 程序会抛异常 )
可以requried 属性指定成false 代表尽量去找对应的组件 找不到也不抛异常
@Resource 可以用在 成员变量 set方法上 不能用在构造上
这个标注 不是Spring 框架的标注 这是JDK 中的标注
优先按照名字进行匹配 如果找不到会 启用类型匹配
无法使用requried 如果有多个符合条件的组件 可以使用name 属性指定
以上是关于Spring的常用标注的主要内容,如果未能解决你的问题,请参考以下文章