精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

New 的對(duì)象也能被 Spring 注入?AspectJ LTW 打破限制!

開發(fā) 前端
Spring 提供了基于 AspectJ 加載期織入(LTW)的解決方案。通過?@Configurable?注解與?META-INF/aop.xml?配置,結(jié)合 JVM?-javaagent?機(jī)制,可在類加載時(shí)動(dòng)態(tài)織入依賴注入邏輯,使?new?出的對(duì)象也能自動(dòng)裝配 Spring Bean。

環(huán)境:SpringBoot3.4.2

1. 簡(jiǎn)介

在傳統(tǒng) Spring 應(yīng)用中,依賴注入(DI)僅限于由 Spring 容器管理的 Bean。然而,在實(shí)際開發(fā)中,常遇到需通過 new 關(guān)鍵字直接創(chuàng)建對(duì)象的場(chǎng)景,如領(lǐng)域?qū)嶓w、DTO 轉(zhuǎn)換、工廠模式或第三方庫(kù)回調(diào)。這些對(duì)象脫離了 Spring 容器的生命周期,無(wú)法使用 @Autowired 注入服務(wù),導(dǎo)致業(yè)務(wù)邏輯與數(shù)據(jù)訪問耦合,難以測(cè)試與維護(hù)。

為此,Spring 提供了基于 AspectJ 加載期織入(LTW)的解決方案。通過 @Configurable 注解與 META-INF/aop.xml 配置,結(jié)合 JVM -javaagent 機(jī)制,可在類加載時(shí)動(dòng)態(tài)織入依賴注入邏輯,使 new 出的對(duì)象也能自動(dòng)裝配 Spring Bean。該技術(shù)突破容器邊界,實(shí)現(xiàn)了真正意義上的全鏈路依賴注入,為復(fù)雜場(chǎng)景下的對(duì)象管理提供了強(qiáng)大支持。

本篇文章會(huì)詳細(xì)介紹LTW技術(shù)的完整實(shí)現(xiàn)過程。

2.實(shí)戰(zhàn)案例

2.1 引入Aspect依賴

要啟用基于 AspectJ 的配置,需要添加 AspectJ Weaver 依賴項(xiàng)。

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aspects</artifactId>
</dependency>

引入 spring-aspects 依賴以支持 @Configurable 等注解的織入,提供 AspectJ 與 Spring 集成的切面實(shí)現(xiàn),是實(shí)現(xiàn)加載期織入(LTW)和自動(dòng)依賴注入的基礎(chǔ)。

2.2 開啟非管理Bean注入功能

@SpringBootApplication
@EnableSpringConfigured
@EnableLoadTimeWeaving
public class App {
}
  • @EnableSpringConfigured:注解向當(dāng)前應(yīng)用上下文發(fā)出信號(hào),以將依賴注入應(yīng)用于那些在Spring Bean工廠之外實(shí)例化的非托管類(通常是使用@Configurable注解標(biāo)注的類)。
  • @EnableLoadTimeWeaving:注解的作用是啟用 Spring 的加載期織入(Load-Time Weaving, LTW)機(jī)制,允許在類加載時(shí)由 AspectJ 對(duì)字節(jié)碼進(jìn)行增強(qiáng),從而實(shí)現(xiàn)對(duì) new 創(chuàng)建的對(duì)象(如標(biāo)記了 @Configurable 的類)進(jìn)行依賴注入,突破 Spring 容器的管理邊界。

2.3 定義不受Spring管理的Bean

@Configurable
public class CommonService {
  @Resource
  private UserService userService ;


  public void getUser() {
    this.userService.query() ; 
  }
}

@Configurable 注解指示 Spring 應(yīng)通過 AspectJ 加載期織入(LTW)機(jī)制,對(duì)該類的實(shí)例進(jìn)行依賴注入。在該示例中,CommonService 類可以通過 new 關(guān)鍵字創(chuàng)建,并借助 @Configurable,Spring 仍能為其注入所需的 Bean。該類中通過 @Resource 注解注入了由 Spring 容器管理的 UserService Bean,使得即使脫離容器直接實(shí)例化,也能正常使用 userService.query() 等業(yè)務(wù)方法,實(shí)現(xiàn)與 Spring 管理對(duì)象的無(wú)縫集成。

定義UserService受管理的Bean

@Service
public class UserService {
  public void query() {
    System.err.println("查詢用戶信息...") ;
  }
}

2.4 測(cè)試new創(chuàng)建CommonService

接下來,我們直接通過定義Runner進(jìn)行測(cè)試,通過new創(chuàng)建CommonService后測(cè)試是否可以正確的注入U(xiǎn)serService。

@Component
public class TestRunner implements CommandLineRunner {
  @Override
  public void run(String... args) throws Exception {
    CommonService cs = new CommonService() ;
    cs.getUser() ;
  }
}

2.5 啟用AspectJ織入

要使 @EnableSpringConfigured 生效,必須啟用 AspectJ 織入。這可以在運(yùn)行時(shí)或編譯時(shí)完成。

運(yùn)行時(shí)織入,添加 spring-instrument 依賴,并將 AspectJ 織入器作為 Java Agent 啟用。

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-instrument</artifactId>
</dependency>

2.6 啟動(dòng)應(yīng)用測(cè)試

在完成以上步驟后,啟動(dòng)應(yīng)用,你將看到如下的錯(cuò)誤:

圖片圖片

錯(cuò)誤信息非常明確的告訴你還需要使用-javaagent:spring-instrument-xxx.jar參數(shù)。

-javaagent:D:\java\maven\org\springframework\spring-instrument\6.2.7\spring-instrument-6.2.7.jar

再次啟動(dòng)應(yīng)用,這次不會(huì)再有錯(cuò)誤,但是將有一堆如下信息:

圖片圖片

一堆error日志,并且我們程序也正確的運(yùn)行了。

解決error日志

我們可以在META-INF下新建aop.xml文件,進(jìn)行相關(guān)的配置,如下:

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "https://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
  <weaver options="-Xlint:ignore">
    <include within="com.pack..*"/>
  </weaver>
</aspectj>
  • <weaver optinotallow="-Xlint:ignore">:?jiǎn)⒂?AspectJ 織入器,并忽略所有織入過程中的警告信息(如無(wú)法找到類、注解等),避免日志污染,但需確保忽略不會(huì)掩蓋關(guān)鍵問題。
  • <include within="com.pack..*"/>:指定僅對(duì) com.pack 包及其子包下的類進(jìn)行織入處理,提高性能并避免對(duì)無(wú)關(guān)類(如第三方庫(kù))進(jìn)行不必要的織入。

2.7 添加增強(qiáng)功能

我們已經(jīng)使用了 META-INF/aop.xml 文件,但它不僅僅用于簡(jiǎn)單配置(如忽略警告信息),還可以在其中定義切面織入規(guī)則,實(shí)現(xiàn)對(duì)目標(biāo)類的 AOP 增強(qiáng),從而擴(kuò)展功能。

新建切面
@Aspect
public class ProfilingAspect {
  @Around("methodsToBeProfiled()")
  public Object profile(ProceedingJoinPoint pjp) throws Throwable {
    StopWatch sw = new StopWatch(getClass().getSimpleName());
    try {
      sw.start(pjp.getSignature().getName());
      return pjp.proceed();
    } finally {
      sw.stop();
      System.err.println(sw.prettyPrint());
    }
  }
  @Pointcut("execution(public * com.pack..*.*(..))")
  public void methodsToBeProfiled() {
  }
}
修改aop.xml文件
<aspectj>
  <weaver options="-Xlint:ignore">
    <include within="com.pack..*"/>
  </weaver>
  <aspects>
    <aspect name="com.pack.mgr.aspect.ProfilingAspect"/>
  </aspects>
</aspectj>

再次啟動(dòng)應(yīng)用,控制臺(tái)輸出:

圖片圖片圖片

責(zé)任編輯:武曉燕 來源: Springboot全家桶實(shí)戰(zhàn)案例
相關(guān)推薦

2020-06-23 08:10:30

Spring容器權(quán)限

2018-01-26 09:01:16

對(duì)象存儲(chǔ)Java

2022-07-01 06:44:42

微信應(yīng)用偽裝應(yīng)用轉(zhuǎn)生

2023-10-23 16:14:00

數(shù)據(jù)孤島數(shù)據(jù)管理

2021-12-22 10:35:04

云計(jì)算

2021-07-02 09:12:39

數(shù)字化

2022-09-26 11:51:47

電信機(jī)房光纖連接

2020-12-22 09:34:20

JavaScript開發(fā)技術(shù)

2021-10-19 21:30:45

微軟Windows 11Windows

2009-01-18 09:19:00

DHCPVlANIP

2022-03-18 12:08:10

微分計(jì)算模式

2021-11-11 11:31:54

擺動(dòng)序列數(shù)字

2019-08-20 00:08:18

MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)

2019-04-12 09:24:46

Spring Clou服務(wù)注冊(cè)

2011-05-31 10:00:21

Android Spring 依賴注入

2019-07-09 08:44:00

DeepfakeGAN人工智能

2011-03-31 11:03:15

2011-07-13 10:32:09

開源

2015-10-20 10:57:22

無(wú)線充電無(wú)線技術(shù)

2019-04-17 18:04:10

網(wǎng)卡虛擬化網(wǎng)絡(luò)設(shè)備
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产在线不卡av| 黄色成人在线免费观看| 亚洲图片在线播放| 午夜精品免费| 亚洲美女福利视频网站| 狠狠躁狠狠躁视频专区| 欧洲一区二区三区| 国产日产欧美一区二区三区| 91老司机在线| 久久久久女人精品毛片九一| 日韩在线高清| 亚洲国产一区二区三区在线观看| 午夜免费福利视频在线观看| 18aaaa精品欧美大片h| 国产女人aaa级久久久级 | 国产原创popny丨九色| fc2在线中文字幕| 成人美女视频在线观看18| 国产九九精品视频| 亚洲天堂av片| 国产精品第十页| www.欧美精品| 在哪里可以看毛片| 久久97精品| 欧美一卡二卡三卡四卡| 美女一区二区三区视频| av最新在线| 亚洲卡通欧美制服中文| 伊人久久大香线蕉午夜av| 青青草在线视频免费观看| 成人一区二区三区视频在线观看| 国产欧美一区二区三区视频 | 国产一区二区三区奇米久涩| 国产又粗又长视频| 日本v片在线高清不卡在线观看| 欧美精品18videos性欧| 中文字幕另类日韩欧美亚洲嫩草| av一区二区在线播放| 亚洲毛片在线看| 99re久久精品国产| 国产亚洲精品美女久久| 日韩精品在线网站| 两性午夜免费视频| 亚洲免费一区| 91精品国产一区二区三区香蕉| 黄大色黄女片18第一次| 亚洲天堂一区二区| 色综合色狠狠综合色| 国产精品va无码一区二区| 国产99在线| 精品久久久在线观看| 你真棒插曲来救救我在线观看| 天天干在线视频论坛| 一区二区在线免费观看| 成人免费a级片| 黄色羞羞视频在线观看| 亚洲国产aⅴ成人精品无吗| 无码人妻精品一区二区蜜桃网站| 色黄网站在线观看| 亚洲第一成人在线| 久激情内射婷内射蜜桃| 在线播放高清视频www| 欧美日韩免费一区| av免费网站观看| 色在线视频观看| 色综合激情五月| 一区二区成人网| 国产精久久久| 亚洲精品一线二线三线| 日韩免费高清一区二区| 视频一区中文| 中文字幕av一区二区| 国产在线观看免费视频软件| 91成人精品| 久久久久久欧美| 无码免费一区二区三区| 久久国产婷婷国产香蕉| 99国产视频| 日本高清中文字幕二区在线| 国产亚洲精品中文字幕| 一本久道久久综合| 污网站在线免费看| 一本大道久久a久久精二百| 久久成年人网站| 国产图片一区| 色综合影院在线| 久久精品性爱视频| 日韩在线a电影| 91在线网站视频| 天堂a√在线| 国产精品久久久久毛片软件| 免费特级黄色片| 一呦二呦三呦精品国产| 在线不卡一区二区| 亚洲の无码国产の无码步美| 成人羞羞视频在线看网址| 欧美另类xxx| 免费看污视频的网站| 国产自产v一区二区三区c| 精品一区久久| 宅男网站在线免费观看| 色综合一个色综合亚洲| 欧美日韩理论片| 免费一区二区| 欧美激情综合色| 中国女人真人一级毛片| 成人毛片老司机大片| 亚洲一区精彩视频| xxxxx性欧美特大| 日韩欧美亚洲一区二区| 1024手机在线观看你懂的| 亚洲激情偷拍| 亚洲aⅴ日韩av电影在线观看| 天堂av在线播放| 亚洲综合激情网| 爱豆国产剧免费观看大全剧苏畅| 欧美日韩一本| 久久国产加勒比精品无码| 国产一级片免费视频| av资源站一区| 日本中文字幕一级片| 欧美a视频在线| 国产亚洲精品久久久久动| 日韩精品国产一区二区| 国产成人免费在线视频| 一本一本a久久| 亚洲不卡系列| 亚洲人成网站免费播放| 久久久久久久黄色片| 东方欧美亚洲色图在线| 青春草在线视频免费观看| 亚洲成人不卡| 亚洲欧洲中文天堂| 亚洲第一在线播放| 99国产精品久久久久| 人人妻人人澡人人爽欧美一区| 99久热在线精品视频观看| 国产亚洲xxx| 亚洲午夜无码久久久久| 日本一区二区在线不卡| 日本va中文字幕| 国产一区二区三区四区大秀| 秋霞成人午夜鲁丝一区二区三区| 天天舔天天干天天操| 亚洲成a天堂v人片| 精品国产av色一区二区深夜久久| 尹人成人综合网| 国产欧美日本在线| 亚洲风情在线资源| 亚洲欧美精品在线| av首页在线观看| 欧美国产一区视频在线观看| 午夜免费福利在线| 久久资源中文字幕| 91久久精品一区| 在线播放免费av| 精品国产乱码久久久久久久久 | 91网在线免费观看| 一色桃子av在线| 欧美成人video| 日韩女同强女同hd| 26uuu亚洲综合色| 成人性生生活性生交12| 97精品97| 国产精品国产三级国产专区53 | 亚洲高清毛片| 蜜桃网站成人| 黄色欧美视频| 欧美激情精品久久久久| 五月天婷婷在线播放| 91久久精品网| 91杏吧porn蝌蚪| 成人av电影在线网| 欧美精品成人网| 亚洲精品在线观看91| 国产超碰91| 欧美精品日日操| 久久色精品视频| 十八禁一区二区三区| 在线亚洲精品福利网址导航| 欧美日韩色视频| youjizz久久| 另类小说第一页| 欧美国产另类| 日本精品一区二区| 日韩一区二区三区精品| 青青久久av北条麻妃黑人| 毛片在线播放a| 精品国产第一区二区三区观看体验| 国产精品999久久久| 国产欧美日韩在线观看| 亚洲午夜精品在线观看| 久久久青草婷婷精品综合日韩| 中文字幕色一区二区| 久久精品色播| 91人人爽人人爽人人精88v| 久草在线中文最新视频| 日韩中文字幕在线| 亚洲区小说区图片区| 欧美精品一二三| 麻豆成人免费视频| 亚洲欧美日韩在线| 瑟瑟视频在线观看| 高清在线成人网| 美女在线视频一区二区| 国产免费成人| 青青视频免费在线| 91综合网人人| 日产精品高清视频免费| 日韩成人午夜| 99porn视频在线| 欧美日韩免费电影| 日本一区二区不卡| 都市激情国产精品| 欧美第一淫aaasss性| 91在线不卡| 亚洲欧美国产一本综合首页| 日日夜夜精品免费| 日韩视频在线观看一区二区| 在线亚洲欧美日韩| 一本到高清视频免费精品| 国产无码精品久久久| 亚洲三级久久久| 美女福利视频网| 国产情人综合久久777777| 国产精品熟妇一区二区三区四区 | 日韩欧美999| 国产第一页在线播放| 日韩一区在线看| 国产精品久久久视频| 国产校园另类小说区| 在线免费观看日韩av| av在线综合网| 日本一区二区在线观看视频| 国产成人精品影视| 久久精品一卡二卡| 国产毛片一区二区| 日韩av福利在线观看| 国产美女在线精品| 国产又粗又猛大又黄又爽| 国产一区二区三区四区在线观看| 三上悠亚在线一区| 精品一区二区三区久久| 99日在线视频| 国产一区二区精品久久99| 午夜激情视频网| 国产精品影音先锋| 亚洲精品一区二区18漫画| 国产精品888| www.美色吧.com| bt7086福利一区国产| 双性尿奴穿贞c带憋尿| 91污片在线观看| 午夜理伦三级做爰电影| 国产日韩精品一区二区浪潮av| 亚洲精品国产精品国自产网站| 亚洲国产精品激情在线观看| 超碰人人人人人人人| 亚洲视频1区2区| 91嫩草|国产丨精品入口| 亚洲国产综合色| 国产a∨精品一区二区三区仙踪林| 图片区小说区区亚洲影院| 六月丁香激情综合| 欧美亚洲一区二区三区四区| 国产一区二区三区三州| 日韩欧美久久久| 亚洲AV成人无码一二三区在线| 国产一区二区三区在线免费观看 | 亚洲人成网亚洲欧洲无码| 欧美在线播放一区| 久久婷婷蜜乳一本欲蜜臀| 中文字幕在线中文| 亚洲女优在线| 91亚洲免费视频| 粉嫩av亚洲一区二区图片| 国产三级国产精品| 中文字幕一区二区三区蜜月| 精品无码免费视频| 91国产视频在线观看| 国产乱淫片视频| 精品亚洲一区二区三区在线观看| 尤物在线视频| 91黑丝在线观看| 国产精品久久久久久吹潮| 国产v亚洲v天堂无码| 国产真实有声精品录音| 视色,视色影院,视色影库,视色网| 国产视频欧美| 爱豆国产剧免费观看大全剧苏畅| 波多野结衣视频一区| 女教师淫辱の教室蜜臀av软件| 亚洲大片在线观看| 曰批又黄又爽免费视频| 亚洲第一网站男人都懂| 欧美极品视频| 青青久久av北条麻妃海外网| 亚洲超碰在线观看| 色噜噜狠狠色综合网| 极品日韩av| 午夜激情影院在线观看| 久久九九久精品国产免费直播| 少妇久久久久久被弄高潮| 在线观看av一区二区| 欧美熟妇交换久久久久久分类 | 青青在线视频| 国产精品久久久久久久天堂| 极品尤物一区| 中国女人做爰视频| 美女视频免费一区| 在线 丝袜 欧美 日韩 制服| 夜夜揉揉日日人人青青一国产精品| 亚洲精品国产欧美在线观看| 精品国产91乱码一区二区三区| 亚洲1卡2卡3卡4卡乱码精品| 日韩69视频在线观看| 大型av综合网站| 女同性恋一区二区| 免费久久精品视频| 亚洲精品国产熟女久久久| 亚洲成人免费视| 性一交一乱一伧老太| 久久韩国免费视频| 高清av一区| 日本黄网免费一区二区精品| 国产精品夜夜夜| 中文字幕一区二区人妻电影丶| 亚洲狼人国产精品| 国产男女猛烈无遮挡| 日韩资源在线观看| 精品福利在线| 西游记1978| 奇米色一区二区| 丁香花五月婷婷| 欧美专区日韩专区| 国产福利免费在线观看| 琪琪第一精品导航| 亚洲警察之高压线| 尤物av无码色av无码| www.av精品| 欧美三级午夜理伦| 日韩电影在线观看中文字幕| 美女的胸无遮挡在线观看 | 精品视频网站| 国产免费又粗又猛又爽| 国产欧美一二三区| 伊人影院中文字幕| 久久精品99无色码中文字幕| 国产精品国产亚洲精品| 可以在线看黄的网站| 国产成人免费网站| 日本中文字幕免费观看| 日韩风俗一区 二区| 自拍偷拍欧美视频| 视频一区二区三区在线观看| 麻豆久久久久久久| 搜索黄色一级片| 欧美成人三级在线| 九色porny丨国产首页在线| 欧美精品二区三区四区免费看视频 | 中文字幕一区日韩电影| 伊人久久大香线蕉综合影院首页| 黄色高清视频网站| 成人国产在线观看| 亚洲欧美综合自拍| 色偷偷偷综合中文字幕;dd| 国产精品3区| 中文字幕日本最新乱码视频| 久久精品综合网| 国产精品-色哟哟| 久久噜噜噜精品国产亚洲综合 | 99久久久精品免费观看国产蜜| 草久视频在线观看| 色狠狠av一区二区三区香蕉蜜桃| www.久久爱.com| 国产精品久久中文字幕| 久久精品亚洲一区二区三区浴池| 在线观看免费观看在线| 欧美—级a级欧美特级ar全黄| 日韩美脚连裤袜丝袜在线| a在线观看免费视频| 一区二区三区在线观看网站| 日本福利片高清在线观看| 国产欧美精品一区二区| 亚洲特色特黄| 337人体粉嫩噜噜噜| 欧美va天堂va视频va在线| 日韩精品影院| 日韩久久久久久久久久久久| 国产欧美综合在线观看第十页 | 精品176极品一区| 少妇人妻无码专区视频| 欧美国产欧美综合| 日本毛片在线观看| 国产拍精品一二三| 99亚洲一区二区| 欧美三级小视频| 伊人伊成久久人综合网站| 欧美变态网站| 中文字幕12页|