spring boot啟動掃描不到自定義註解
對於自定義註解這裡就不嘮叨了,百度一大堆,這裡有我一個自定義註解
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface MsgEvent {
RetailOrderEvent msgEvent();
}
註解實現類
@Component
public class MsgEventProcessor implements BeanPostProcessor {
/**
* 事件訊息註解與例項Bean的對映物件
*/
public static Map<String, ServiceBean> EVENTCODESERVICEBEANMAP = new HashMap<String, ServiceBean>();
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
Method[] methods = ReflectionUtils.getAllDeclaredMethods(bean.getClass());
if (methods != null) {
for (Method method : methods) {
MsgEvent myMsgEvent = AnnotationUtils.findAnnotation(method, MsgEvent.class);
if (myMsgEvent != null) {
String eventCode = myMsgEvent.msgEvent().eventCode();
ServiceBean servieBean = new ServiceBean();
servieBean.setServiceBeanObj(bean);
servieBean.setServiceMethod(method);
Class<?> argsCls = method.getParameterTypes()[0];
servieBean.setArgsCls(argsCls);
EVENTCODESERVICEBEANMAP.put(eventCode, servieBean);
}
}
}
return bean;
}
}
呼叫者
@MsgEvent(msgEvent = RetailOrderEvent.PLACE_GENERALRETAILORDER)
public Person getPerson(Person p) {
return personMapper.getPerson(p.getId());
}
spring boot debug模式下啟動一直不會再程式碼紅色部分停下,說明沒有獲取到自定義註解
原因是發現bean為jdk代理
解決辦法
@SpringBootApplication
@EnableAspectJAutoProxy(exposeProxy = true)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
或者@ImportResource(locations = { "classpath:spring-basic.xml" })
@SpringBootApplication
//@EnableAspectJAutoProxy(exposeProxy = true)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
spring-basic.xml<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd ">
<!-- 配置使Spring採用CGLIB代理 -->
<aop:aspectj-autoproxy expose-proxy="true" proxy-target-class="true" />
</beans>
____________________
上述會讓所有的都採用CGLIB代理,如果只想對使用的類採用,其他的還是原來的話就可以對註解使用類上標註@Configuration代替@Component
相關文章
- Spring Boot 自定義註解Spring Boot
- Spring Boot 自定義註解失效Spring Boot
- Spring Boot 基於註解驅動原始碼分析--自動掃描Spring Boot原始碼
- 【Spring註解驅動開發】元件註冊-@ComponentScan-自動掃描元件&指定掃描規則Spring元件
- Spring 自定義註解(上)Spring
- 安卓自定義二維碼掃描安卓
- Spring下掃描特定包下特定註解的類並動態註冊beanSpringBean
- Spring Boot中自定義註解+AOP實現主備庫切換Spring Boot
- Spring Boot 自定義 starterSpring Boot
- 自定義Spring Boot StarterSpring Boot
- 自定義 Spring Boot StarterSpring Boot
- Spring 自動掃描元件Spring元件
- 利用Sonar定製自定義掃描規則
- Android自定義View 雷達掃描效果AndroidView
- Spring Boot 自動配置的原理、核心註解以及利用自動配置實現了自定義 Starter 元件Spring Boot元件
- 自定義註解
- 【spring-boot】自定義starterSpringboot
- win10系統掃描器提示掃描不到掃描器如何解決Win10
- Spring Boot(3)---自定義spring boot starter 問題Spring Boot
- Spring boot註解Spring Boot
- spring元件掃描使用詳解Spring元件
- redis分散式鎖-spring boot aop+自定義註解實現分散式鎖Redis分散式Spring Boot
- 使用AOP+自定義註解完成spring boot的介面許可權校驗Spring Boot
- @ComponentScan註解的實現,Spring掃描包的過程Spring
- Spring4.0MVC學習資料,註解自動掃描bean,自動注入bean(二)SpringMVCBean
- 自定義u-boot啟動logo的方法bootGo
- win10掃描器在哪開啟 win10如何啟動掃描器Win10
- 你的開發利器Spring自定義註解Spring
- Spring Boot - 自定義 Banner 圖案Spring Boot
- 自定義JAVA註解Java
- java 自定義註解Java
- Java 自定義註解Java
- 【Spring註解驅動開發】自定義TypeFilter指定@ComponentScan註解的過濾規則SpringFilter
- Spring Boot 系統啟動任務定義Spring Boot
- Java中的註解-自定義註解Java
- NMAP為什麼掃描不到埠
- 為什麼電腦上找不到掃描功能 win10找不到印表機掃描功能Win10
- (第五講)自定義Spring Boot StarterSpring Boot