Spring AOP 注解实现

本文介绍了如何使用 Spring AOP 的注解来实现切面编程,包括 @Component、@Aspect 和 @Before 等注解的用法。通过创建一个 UserDAO 接口及其实现类,并配置 XML 或采用 Java 配置类启用 AOP 自动代理,展示了在方法执行前插入日志的前置通知功能。同时提供了测试方法验证了切面的正确工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring AOP 注解实现

一共 三个注解

@Component   注入服务
@Aspect  把当前类标识成一个切面供应器读取
 @Before(value = "execution(* com.dzqc..*.*(..))") 标识一个前置方法

建造一个接口

package com.dzqc.dao;

public interface UserDao {
     void insert();
     void select();
     void update();
     void delete();
}

建造一个类来实现接口

package com.dzqc.dao;

import org.springframework.stereotype.Component;

@Component
public class UserDaoimpl implements UserDao{
    @Override
    public void insert() {
        System.out.println("增加了一个用户");
    }

    @Override
    public void select() {
        System.out.println("查询用户信息");

    }

    @Override
    public void update() {
        System.out.println("修改了一个用户");

    }

    @Override
    public void delete() {
        System.out.println("删除了一个用户");

    }
}

XML文件配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:contexgt="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation=
         "http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop.xsd">

<!--    会议以下 IOC包扫苗-->
    <contexgt:component-scan base-package="com.dzqc"/>
<!--   AOP实现注解自动代理     切面自动代理-->
    <aop:aspectj-autoproxy/>
</beans>

切面类

package com.dzqc.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class MyAnnoAdvice {
    @Before(value = "execution(* com.dzqc..*.*(..))")
    public void before(){
        System.out.println("-------------before-----------");
    }



}

测试方法

  @Test
    public void test() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        UserDao bean = context.getBean(UserDao.class);
        bean.select();
    }

如果不要XML实现

也可以新建一个类

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

/**
 * @EnableAspectJAutoProxy 在启动类中 加上它 就能支持AOP
 * @Configuration  当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(.xml)
 * @ComponentScan(value = "com.dzqc") 该注解默认会扫描该类所在的包下所有的配置类
 */
@Configuration
@ComponentScan(value = "com.dzqc")
@EnableAspectJAutoProxy
public class Config {
}

测试方法

    @Test
    public  void annotest(){
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao bean1 = classPathXmlApplicationContext.getBean(UserDao.class);
        bean1.select();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值