1.1 @Component:组件
- 修饰一个类,将这个类交给Spring来管理
- 该注解有三个衍生注解(功能类似),建议使用
@Controller
:修饰web层的类@Service
:修饰service层的类@Repository
:修饰dao层的类
属性注入的注解
- 普通属性
@Value
: 设置普通属性的值
- 对象类型属性
@Autoware
:设置对象类型的属性值,但是按照类型完成属性注入,我们习惯按照名称完成属性注入,必须让该注解与@Qualified
注解一起使用,@Qualified(value="")
传入具体的名称- @Resource : 完成对象类型的属性注入:按照名称来完成的属性,实际开发中常使用,是Spring实现的一套接口规范
Bean的其他注解
一: 生命周期相关
- @PostConstruct :初始化方法
- @PreDestroy :销毁方法
二:Bean的作用范围注解 @Scope:作用范围
- singleton :默认单例
- prototype :多例
- request :
- session :
- globalsession:
1.2 IOC基于XML配置与注解配置的比较
- 适用场景
- XML: 适用于任何场景,结构清晰维护方便
- 注解:该类不是注解提供的,比如说是源代码的。开发方便
- XML和注解整合开发
- XML管理Bean
- 注解完成属性注入
Spring的AOP的XML开发
一:底层实现原理
- 动态代理
- JDK动态代理 :只能对实现接口的类产生代理
- Cglib动态代理(类似于Javassist第三方代理技术):对于没有接口的类产生代理,生成子对象
二: JDK动态代理
三: Cglib动态代理
1.3 Spring的AOP开发(AspectJ的XML的方式)
- 创建web项目,引进jar包
- 引入基本的开发包
-
引入aop开发相关的jar包
-
引入Spring的配置文件
- 引入aop约束
扫描二维码关注公众号,回复:
6073240 查看本文章
- 编写目标类,完成配置
- 编写测试类,引入Spring单元测试的jar包
1.4 Spring中的通知类型
1.4.1 前置通知: 在目标方法执行前进行操作
- 获得切入点信息,在代理类MyAspectXML中的checkPri的方法中传入如下参数,并运行测试类,得到结果
1.4.2 后置通知: 在目标方法执行之后的操作
- 获取切入点信息以及方法的返回值
1.4.3 环绕通知: 在目标方法执行之前和执行之后进行操作
- 阻止目标方法的执行
1.4.4 异常抛出通知: 在程序出现异常的时候,进行的操作
1.4.5 最终通知: 不管代码有没有异常,总会执行
14.6 引介通知:
Spring的切入点表达式
- 基于excution的函数完成的
- 语法
- [访问修饰符] 方法返回值 包名 类名.方法名(参数)
- public void it.spring.demo.CustomerDao.save(..)
- *it.spring.demo.CustomerDao+save(...)