电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

如何解決SpringBoot 加入AOP后無法注入的問題

瀏覽:68日期:2023-03-01 16:37:48
SpringBoot 開啟AOP后 出現(xiàn)無法注入的問題 真是坑的很啊~

提示錯誤

org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type

或者

java.lang.ClassCastException: com.sun.proxy.$Proxy12 cannot be cast to cn.edu.nuc.SpringTest.service.impl.DemoServiceImpl

解決方案

在application.properties中添加配置

#true為使用CGLIB代理,false為JDK代理,默認(rèn)為falsespring.aop.proxy-target-class=true

引以為戒啊!!!!!!!

springboot使用aop攔截controller干一些事導(dǎo)致service們@Autowired全部注入失敗

springboot使用aop攔截controller干一些事導(dǎo)致controller里的service們@Autowired全部注入失敗,報空指針

先集成使用aop吧

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>

properties修改

#aopspring.aop.proxy-target-class=truespring.aop.auto=true

proxy-target-class屬性值決定是基于接口的還是基于類的代理被創(chuàng)建。如果proxy-target-class 屬性值被設(shè)置為true,那么基于類的代理將起作用(這時需要cglib庫)。

如果proxy-target-class屬值被設(shè)置為false或者這個屬性被省略,那么標(biāo)準(zhǔn)的JDK 基于接口的代理將起作用。

然后直接貼一個模型代碼吧

import cc.datebook.utils.IpUtil;import com.google.gson.Gson;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Configuration;import org.springframework.web.context.request.RequestAttributes;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import org.springframework.web.servlet.HandlerMapping;import javax.servlet.http.HttpServletRequest;import java.util.Map;/** * Created by wangH on 2017/12/12. */@Aspect@Configurationpublic class ControllerMonitorAop { private static final Logger logger = LoggerFactory.getLogger(ControllerMonitorAop.class); ThreadLocal<Long> startTime = new ThreadLocal<>();@Pointcut('execution(public * cc.datebook.web.*Controller.*(..))') public void excudeService() {} @Around('excudeService()') public Object doAround(ProceedingJoinPoint pjp) throws Throwable {RequestAttributes ra = RequestContextHolder.getRequestAttributes();ServletRequestAttributes sra = (ServletRequestAttributes) ra;HttpServletRequest request = sra.getRequest();String ipAddr = IpUtil.getIpAddr(request);String url = request.getRequestURL().toString();String method = request.getMethod();String uri = request.getRequestURI();String queryString = request.getQueryString();String params = '';if ('POST'.equals(method)) { Object[] paramsArray = pjp.getArgs(); params = argsArrayToString(paramsArray);} else { Map<?, ?> paramsMap = (Map<?, ?>) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); params = paramsMap.toString();}logger.info('request begin=>ipAddr: {}, url: {}, method: {}, uri: {}, params: {}', ipAddr, url, method, uri, params);// result的值就是被攔截方法的返回值Object result = pjp.proceed();Gson gson = new Gson();String ab = gson.toJson(result).toString();if (ab.length() > 200){ ab = ab.substring(0,200);}logger.info('request end=>' + ab);return result; } /** * 請求參數(shù)拼裝 * @param paramsArray * @return */ private String argsArrayToString(Object[] paramsArray) {String params = '';if (paramsArray != null && paramsArray.length > 0) { for (int i = 0; i < paramsArray.length; i++) {Gson gson = new Gson();Object jsonObj = gson.toJson(paramsArray[i]);params += jsonObj.toString() + ' '; }}return params.trim(); }}

但是攔截所有controller之后發(fā)現(xiàn) service都注入失敗

解決方案

這個aop只能適用于 protect 和public

之后把controller中的所有方法都改成public

如何解決SpringBoot 加入AOP后無法注入的問題

一個小坑吧~

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 浙江美尔凯特智能厨卫股份有限公司 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | 全自动包装机_灌装机生产厂家-迈驰包装设备有限公司 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 魔方网-培训咨询服务平台| 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | CE认证_产品欧盟ROHS-REACH检测机构-商通检测 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 100国际学校招生 - 专业国际学校择校升学规划 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 膜片万向弹性联轴器-冲压铸造模具「沧州昌运模具」 | CPSE安博会| 湖北省煤炭供应链综合服务平台 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 珠光砂保温板-一体化保温板-有釉面发泡陶瓷保温板-杭州一体化建筑材料 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 贝壳粉涂料-内墙腻子-外墙腻子-山东巨野七彩贝壳漆业中心 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 液氮罐_液氮容器_自增压液氮罐_杜瓦瓶_班德液氮罐厂家 | 制样机-密封锤式破碎机-粉碎机-智能马弗炉-南昌科鑫制样 |