<!--配置IOC-->
<!--配置Spring的ioc,把service对象配置进来,需要增强的类-->
<bean id="AccountService" class="cn.lz.Service.impl.AccountServiceImpl"></bean>
<!--Spring中基于xml的AOP配置步骤
1.把通知bean也交给Spring来管理
2.使用aop:config标签表明开始AOP的配置
3.使用aop:aspect标签标示配置切面
id属性:是给切面提供一个唯一表示
ref属性:是指定通知类bean的ID
4.在aop:aspect标签的内部使用对应标签来配置通知的类型
我们现在示例是让printLog方法在切入点方法执行之前执行。所以是前置通知
aop:before 标示是前置通知
method属性:用于指定Logger类那个方法是前置通知
pointcut属性:用于指定切入点表达式,该表达式的含义指的是对业务层中
哪些方法增强
切入点表达式的写法:
关键字:execution(表达式)
访问修饰符 返回值 包名.包名.包名....类名.方法名(参数列表)
public void cn.lz.Service.impl.AccountServiceImpl.addAccount()
访问修饰符可以省略:
void cn.lz.Service.impl.AccountServiceImpl.addAccount()
返回值可以使用通配符,表示任意返回值:
* cn.lz.Service.impl.AccountServiceImpl.addAccount()
包名可以使用通配符,表示任意包。但是有几级包,就需要写几个*。
* *.*.*.*.AccountServiceImpl.addAccount()
包名还可以使用 ..表示当前包及子包
* *..AccountServiceImpl.addAccount()
意思:任意包下有AccountServiceImpl.addAccount()就会被增强
类名和方法名都可以使用*来实现统配 * *..*.*()
参数列表:
可以直接写数据类型:
基本类型直接写名称 int
引用类型写包名.类名 java.lang.String
可以使用通配符表示任意类型 但是必须有参数
可以使用..表示有无参数均可,有参数可以任意类型 * *..*.*(..)
全通配写法
* *..*.*(..)
实际开发中切入点表达式的通常写法
切到业务层实现类下的所用方法
* cn.lz.Service.impl.*.*(..)
要导入aspectj这个jar包
<!--配置logger类-->
<bean id="logger" class="cn.lz.utils.Logger"></bean>
<!--配置AOP-->
<aop:config>
<!--配置切面-->
<aop:aspect id="logAdvice" ref="logger">
<!--配置的通知类型,并且建立通知方法和切入点方法的关联-->
<aop:before method="prinLog" pointcut="execution(public
voidcn.lz.Service.impl.AccountServiceImpl.addAccount())"></aop:before>
</aop:aspect>
</aop:config>
</beans>
<!--配置IOC--> <!--配置Spring的ioc,把service对象配置进来,需要增强的类--> <bean id="AccountService" class="cn.lz.Service.impl.AccountServiceImpl"></bean> <!--Spring中基于xml的AOP配置步骤 1.把通知bean也交给Spring来管理 2.使用aop:config标签表.
问题:看了很多关于Spring AOP的文章,在讲各种切入方式(before、around、after-returnning、thrown等)时,被切入的业务主体Bean的方法,基本都是无参数的。
也有提到有参数的,但都是一个String型的参数。
以before为例,无参数方法的切点配置为
[code="xml"]
[/code]
如果方法有一个String型的参...
Spring Boot中的IOC(控制反转)和AOP(面向切面编程)是两个重要的概念。
IOC是指将对象的创建和依赖关系的管理交给Spring容器来完成,而不是由程序员手动创建和管理对象。这样可以降低代码的耦合度,提高代码的可维护性和可扩展性。
AOP是指通过在程序运行时动态地将代码切入到类的指定方法或代码块中,从而实现对程序行为的增强。AOP可以用来实现日志记录、性能统计、安全控制等功能,同时也可以降低代码的耦合度,提高代码的可维护性和可扩展性。
在Spring Boot中,IOC和AOP都是通过Spring框架来实现的。Spring Boot提供了自动配置和快速开发的特性,使得开发者可以更加方便地使用IOC和AOP来开发高质量的应用程序。
【C++编程语言】严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3848 具有类型“const MyCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool
weixin_54957801:
你想对大学的自己说点什么——一些感慨罢了