开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情
写在前面
作为一个java程序员,spring应该都不会陌生了吧?
对于大部分程序员来说,spring的入门,估计跑起一个框架,熟悉一下开发的流程,基本上就掌握spring框架的开发了。
随着开发年限的变大,我们不能仅仅是掌握到这个地步,更应该深入的学习spring框架。
这不,接下来就是spring框架的学习之旅了,希望可以帮助到大家。
一、基于AspectJ的AOP使用
其实就是指的Spring + AspectJ整合 ,不过Spring已经将AspectJ收录到自身的框架中了, 并且底层织入依然是采取的动态织入方式。
1.1 添加依赖
<!--基于AspectJ的aop依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
1.2 编写目标类和目标方法
- 编写接口和实现类(目标对象)
UserService接口
UserServiceImpl实现类
- 配置目标类, 将目标类交给spring IoC容器管理
<context:component-scan base-package="llsydn.ioc" />
1.3 使用XML实现
1.3.1 实现步骤
- 编写通知(增强类, 一个普通的类)
/**
* @author lilinshen
* @title 请填写标题
* @description 请填写相关描述
* @date 2022-11-28
*/
public class MyAdvice {
public void log(){
System.out.println("记录日志...");
}
}
- 配置通知, 将通知类交给spring IoC容器管理
<!--配置通知、增强-->
<bean name="myAdvice" class="com.llsydn.springStudy.advice.MyAdvice"></bean>
- 配置AOP切面
<!--配置通知、增强-->
<bean name="myAdvice" class="com.llsydn.springStudy.advice.MyAdvice"></bean>
<!--AOP配置-->
<aop:config>
<aop:aspect ref="myAdvice">
<!-- method: 指定要增强的方法。也就是指定通知类中的增强功能方法-->
<!-- pointcut: 指定切入点,需要通过表达式来指定-->
<aop:before method="log"
pointcut="execution(void com.llsydn.springStudy.dao.UserDaoImpl.insert())" />
</aop:aspect>
</aop:config>
1.3.2 切入点表达式
- 切入点表达式的格式:
execution([修饰符] 返回值类型 包名.类名.方法名(参数))
- 表达式格式说明:
- execution: 必须要
- 修饰符: 可省略
- 返回值类型: 必须要,但是可以使用 * 通配符
- 包名:
** 多级包之间使用 . 分割 ** 包名可以使用*代替,多级包名可以使用多个 * 代替 ** 如果想省略中间的包名可以使用 ..- 类名:
** 可以使用 * 代替 ** 会也可以写成 *DaoImpl- 方法名:
** 也可以使用 * 代替 ** 也可以写成 add*- 参数:
** 参数使用 * 代替 ** 如果有多个参数,可以使用 .. 代替
好了,以上就是Spring学习之旅-核心高级篇(5) 的全部内容了。
今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^
如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!