为什么使用注解?
当我们的项目越来越复杂时 配置文件也会变得复杂 这样不仅影响开发效率 还影响错误查找
因此 Spring 提供了注解方式开配置bean
使用注解需要准备工作
1. 导入 Spring架包
2. 引入约束文件 context文件
3. 开启扫描注解 <context:component-scan base-package=" + 包名 + "></context:component-scan>
常用注解
@Component
给User类加上该注解就等同于在配置文件添加了<bean name = "user" class = "..." >
如果没有指定bean名字 默认是类名以小写开头
为其指定名字 @Component("name")
Spring 为了细化注解 引入了 Component 的三个子注解
@Service 对应Service业务逻辑
@Controller 对应Action Servlet层
@Repository 对应数据库相关
这三个子标签作用和 Component 作用一样 更加语义化
@Scope(scopeName ="")
用来控制bean的作用域
候选词组有
prototype
singleton
request
session
@Value("值")
为属性注入值 可以写在属性上 也可以写在set方法上 写在属性上会破坏对象的封装性 建议写在set上
@Autowired
自动装配 可以将容器中对应的bean 自动注入到属性中
@Qualifier
如果容器中有多个类型相同的bean 可以使用此注解 可以具体装配到哪一个
一般和 @Autowired 搭配使用
@Resource(name="") 手动装配 告诉spring 把哪一个bean 注入进来
@PostConstruct 对象构造后立即执行
@PreDestroy 对象销毁前执行
Spring中的测试方法
// 想要在Spring中测试某个方法时需要了下面这两个注解(加在类上)
// 运行测试时 会自动创建 spring 容器
@RunWith(SpringJUnit4ClassRunner.class)
// 指定配置文件
@ContextConfiguration("classpath:applicationContext.xml")
// 当然 我们只在测试方类中这样书写 原因是Test环境中 类不会自动创建容器
// 因此 我们不能直接使用 @Autowired 其他的环境下可以直接使用
Spring AOP 编程
AOP为Aspect Oriented Programming的缩写 意为面向切片编程
拦截器 实质是就AOP思想的一种体现 可以参考拦截器实现原理理解AOP