解决——》SpringBoot中@Aspect注解不起作用

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Spring】
    总结——》【SpringBoot】

1、操作

自定义了一个Aspect类,并使用@Aspect注解

2、现象(错误信息)

@Aspect注解不起作用

3、原因

启动类中没有添加注解@EnableAspectJAutoProxy

4、解决

启动类Application中添加@EnableAspectJAutoProxy

@SpringBootApplication
@MapperScan(basePackages = {"com.xiaoxian.srl.mapper"})
@EnableAspectJAutoProxy
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

请注意pom.xml依赖(缺少依赖也会导致@Aspect注解不起作用)

		<dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.4</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.9.4</version>
        </dependency>
### 如何在 Spring Boot 中添加和配置自定义注解 #### 创建自定义注解 创建自定义注解涉及几个关键部分,包括目标、保留策略以及可选的成员变量。下面是一个简单的例子: ```java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) // 定义该注解可以被放置的位置 @Retention(RetentionPolicy.RUNTIME) // 注解将在运行时可用 public @interface CustomAnnotation { String value() default ""; // 可选参数,默认为空字符串 } ``` 此代码片段展示了如何声明一个新的名为 `CustomAnnotation` 的注解[^1]。 #### 配置处理器来处理自定义注解 为了使自定义注解生效,通常需要编写相应的逻辑去解析这些注解并执行特定的行为。这可以通过AOP切面编程实现,在Spring框架下非常容易操作。例如: ```java import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Component @Aspect public class CustomAnnotationProcessor { @Around("@annotation(customAnnotation)") public Object process(ProceedingJoinPoint joinPoint, CustomAnnotation customAnnotation) throws Throwable { System.out.println("Before method execution with annotation: " + customAnnotation.value()); try { return joinPoint.proceed(); } finally { System.out.println("After method execution"); } } } ``` 这段代码实现了对带有 `CustomAnnotation` 方法调用前后的增强功能[^2]。 #### 使用内置注解 除了自定义注解外,Spring Boot 提供了许多有用的内建注解用于简化开发工作流。一些常见的有: - **@Component**: 将类标记为组件bean以便自动检测。 - **@Service/@Repository/@Controller**: 这些都是特殊的组件注解,分别对应服务层、数据访问对象(DAOs)/持久化层和服务端控制器。 - **@Autowired**: 自动装配依赖关系;当存在多个候选者时还可以配合限定符使用。 - **@Value**: 从外部资源注入属性值。 对于更复杂的业务需求,则可能需要用到像事务管理(`@Transactional`)这样的高级特性或是集成测试支持(`@RunWith`, `@SpringBootTest`)等工具性的注解。 #### 实际应用场景举例 考虑这样一个场景——想要跟踪某些API接口请求的时间消耗情况而不改变原有代码结构。此时就可以利用上述提到的技术栈快速搭建一套解决方案:先设计好时间统计专用的注解,再借助于AOP技术实现在不侵入原函数体的情况下完成性能监控的目的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值