Spring框架bean.xml中配置AOP的步骤(1)

今天给大家总结一下,我今天学习的spring配置AOP的步骤,通常在事务管理经常用到这些配置,他比动态代理实现事务控制简单的多。

项目的目录结构如上图,bean.xml配置文件的内容如下
<!-- 配置Spring的IOC,把service对象配置进来-->
    <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>

    <!-- Spring中基于XML的配置步骤
            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 com.itheima.service.impl.AccountServiceImpl.saveAccount()
                        访问修饰符可以忽略
                            void com.itheima.service.impl.AccountServiceImpl.saveAccount()
                        返回值可以用通配符表示
                            * com.itheima.service.impl.AccountServiceImpl.saveAccount()
                        包名可以使用通配符,表示任意包。但是有几级包,就需要写几个*
                            * *.*.*.*.AccountServiceImpl.saveAccount()
                        包名可以使用..表示当前包或者子包
                            * *..AccountServiceImpl.saveAccount()
                        类名和方法名都可以用*来实现通配
                            * *..*.saveAccount()
                        参数列表:
                            可以直接写数据类型,基本类型直接写 int;
                            引用类型用包名.类名的方式 java.lang.String
                            * *..*.saveAccount()
                            可以使用通配符代表参数,但只能表示有参数的
                            可以使用..代表可有可无的参数,有参数可以是任意类型

                        全通配写法:
                            * *..*.*(..)
                        实际开发中切入点表达式的通常写法:
                            切到业务层实现类下的所有方法
                                * com.itheima.service.impl.*.*(..)

    -->
    <!-- 配置logger类-->
    <bean id="logger" class="com.itheima.util.logger"></bean>
    <!-- 配置AOP-->
    <aop:config>
        <!-- 配置切面-->
        <aop:aspect id="logAdvice" ref="logger">
            <!-- 配置通知类型,并且建立通知方法和切入点方法的关联-->
            <aop:before method="printLog" pointcut="execution(* com.itheima.service.impl.*.*(..)
            )"></aop:before>
        </aop:aspect>
    </aop:config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DI99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值