亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot中怎么實現aop面向切面編程

發布時間:2021-06-11 17:03:23 來源:億速云 閱讀:176 作者:Leah 欄目:編程語言

SpringBoot中怎么實現aop面向切面編程,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是Spring框架中的一個重要內容,它通過對既有程序定義一個切入點,然后在其前后切入不同的執行內容,比如常見的有:打開數據庫連接/關閉數據庫連接、打開事務/關閉事務、記錄日志等。基于AOP不會破壞原來程序邏輯,因此它可以很好的對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。

spring aop默認是使用JDK動態代理,即基于接口的代理,可以通過proxy-target-class屬性修改。如果proxy-target-class=true, 那基于類的代理將起作用(這時需要cglib庫)。

引入依賴

<!--aop-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--spring 的aop默認是使用JDK代理,即-->
<!--用來動態代理用的,基于類的代理-->
<dependency>
  <groupId>cglib</groupId>
  <artifactId>cglib</artifactId>
  <version>3.2.12</version>
</dependency>

注:在完成了引入AOP依賴包后,一般來說并不需要去做其他配置。也許在Spring中使用過注解配置方式的人會問是否需要在程序主類中增加@EnableAspectJAutoProxy來啟用,實際并不需要。AOP的默認配置屬性中spring.aop.auto屬性默認是開啟的,也就是說只要引入了AOP依賴后,默認已經增加了@EnableAspectJAutoProxy。

實現AOP的切面主要有以下幾個要素:

  • 使用@Aspect注解將一個java類定義為切面類

  • 使用@Pointcut定義一個切入點,可以是一個規則表達式,比如某個package下的所有函數,也可以是一個注解等。

  • 根據需要在切入點不同位置的切入內容,即不同的通知:@Before、@After、@AfterReturning、@Around、@AfterThrowing

普通業務組件

/**
 * 普通業務組件
 */
@Component
public class CustomerBusiness {

  private String message;

  public void setMessage(String message) {
    this.message = message;
  }

  public void getMessage() {
    System.out.println("Your Message : " + message);
  }
}

切面

@Aspect //聲明式一個切面組件
@Component //加入到IoC容器
public class TimeHandler {
  
  //指定切入點表達式,攔截那些方法,即為哪些類生成代理對象
  @Pointcut("execution(* com.linhw.demo.ascpet.CustomerBusiness.*())")
  public void pointCut(){
    
  }
  
  @Before("pointCut()")
  public void printBeforeTime() {
    System.out.println("---------------Before CurrentTime = " + System.currentTimeMillis());
  }
  
  @After("pointCut()")
  public void prinAftertTime() {
    System.out.println("---------------After CurrentTime = " + System.currentTimeMillis());
  }
  
}

測試

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {AopApplication.class})
public class AopTest {

  @Autowired
  CustomerBusiness business;

  @Test
  public void testAop(){
    business.setMessage("hello world");
    business.getMessage();
  }
}

關于SpringBoot中怎么實現aop面向切面編程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梅州市| 读书| 永靖县| 巴彦县| 天镇县| 桦甸市| 开阳县| 余江县| 巴楚县| 长垣县| 习水县| 定襄县| 平阴县| 甘洛县| 鹰潭市| 洛隆县| 娱乐| 双鸭山市| 济阳县| 五指山市| 扎赉特旗| 永春县| 双峰县| 咸丰县| 阳信县| 邹平县| 镇江市| 贵州省| 翁源县| 丹江口市| 嵊州市| 闻喜县| 永宁县| 巫山县| 万年县| 乌什县| 常宁市| 博湖县| 瑞昌市| 洛浦县| 五台县|