Heim  >  Artikel  >  Java  >  So konfigurieren Sie das annotationsbasierte AOP von Java Spring

So konfigurieren Sie das annotationsbasierte AOP von Java Spring

PHPz
PHPznach vorne
2023-05-17 17:37:061017Durchsuche

    1 Umgebungseinrichtung

    1.1 Schritt 1: Erforderlichen Code und JAR-Paket vorbereiten

    #🎜🎜 ## 🎜🎜#
      Kopieren Sie einfach das Projekt im vorherigen Abschnitt.
    • 1.2 Schritt 2: Kontext-Namespace in die Konfigurationsdatei importieren
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
     
        <!-- 配置数据库操作对象 -->
        <bean id="dbAssit" class="com.itheima.dbassit.DBAssit">
            <property name="dataSource" ref="dataSource"></property>
            
            <!-- 指定 connection 和线程绑定 -->
            <property name="useCurrentConnection" value="true"></property>
        </bean>
     
        <!-- 配置数据源 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql:///spring_day02"></property>
            <property name="user" value="root"></property>
            <property name="password" value="1234"></property>
        </bean>
    </beans>

    1.3 Schritt 3: Anmerkungen zur Ressourcennutzung konfigurieren# 🎜🎜## ??

    @Service("accountService")
    public class AccountServiceImpl implements IAccountService {
     
        @Autowired
        private IAccountDao accountDao;
    }

    1.4 Schritt 4: Geben Sie in der Konfigurationsdatei das Paket an, das von Spring gescannt werden soll
      @Repository("accountDao")
      public class AccountDaoImpl implements IAccountDao {
          @Autowired
          private DBAssit dbAssit ;
      }
    • 2 Konfigurationsschritte

      2.1 Schritt eins: Konfigurieren Sie die Benachrichtigungsklasse mithilfe von Anmerkungen die @Aspect-Annotation für die Benachrichtigungsklasse, um sie als Aspekt zu deklarieren 🎜#Deklarieren Sie die aktuelle Klasse als Aspektklasse.
    • Transaktionskontrollklasse

    <!-- 告知 spring,在创建容器时要扫描的包 -->
    <context:component-scan base-package="com.itheima"></context:component-scan>

    2.3 Schritt 3: Auf der erweiterten Methode Benachrichtigungen konfigurieren Verwendung von Anmerkungen

    2.3.1 @Before

      Funktion:
    • #🎜🎜 ## 🎜🎜#Betrachten Sie die aktuelle Methode als Vorabbenachrichtigung.

      Attribut:
      • Wert: wird zur Angabe des Einstiegspunktausdrucks verwendet Ausdruck können Sie auch einen Verweis auf einen Pointcut-Ausdruck angeben. #🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜##
        @Component("txManager")
        public class TransactionManager {
         
            //定义一个 DBAssit
            @Autowired
            private DBAssit dbAssit ;
        }
      • 2.3.2 @azarRing#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜#Funktion:#🎜🎜 ## 🎜 🎜#

      • Betrachten Sie die aktuelle Methode als Nachbenachrichtigung.
    • Attribut:

    Wert: wird zur Angabe des Einstiegspunktausdrucks verwendet In der Formel können Sie auch die Referenz des Pointcut-Ausdrucks angeben. # 🎜🎜#Funktion:
    • Betrachten Sie die aktuelle Methode als Ausnahmebenachrichtigung.
      • Attribut:
    • Wert: Wird zur Angabe des Einstiegspunktausdrucks verwendet In der Formel können Sie auch die Referenz des Pointcut-Ausdrucks angeben. # 🎜🎜#Funktion:
      • Betrachten Sie die aktuelle Methode als endgültige Benachrichtigung.
      Attribut:
      • Wert: Wird zur Angabe des Einstiegspunktausdrucks verwendet In der Formel können Sie auch die Referenz des Pointcut-Ausdrucks angeben ?? 🎜# Behandeln Sie die aktuelle Methode als umgebende Benachrichtigung.
      Attribut:
      • Wert: Wird zur Angabe des Einstiegspunktausdrucks verwendet Ausdruck können Sie auch einen Verweis auf einen Pointcut-Ausdruck angeben.
      • @Component("txManager")
        @Aspect//表明当前类是一个切面类
        public class TransactionManager {
         
            //定义一个 DBAssit
            @Autowired
            private DBAssit dbAssit ;
        }
      4 Pointcut-Ausdrucksanmerkung @Pointcut
      Funktion: #🎜🎜 ## 🎜🎜#
    • Pointcut-Ausdruck angeben
      • Attribut:
      • #🎜 🎜## 🎜 🎜#
    • Wert: Geben Sie den Inhalt des Ausdrucks an

      • //开启事务
        @Before("execution(* com.itheima.service.impl.*.*(..))")
        public void beginTransaction() {
         
            try {
                dbAssit.getCurrentConnection().setAutoCommit(false);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
      • 5 Konfigurationsmethode ohne XML# 🎜🎜 #
        //提交事务
        @AfterReturning("execution(* com.itheima.service.impl.*.*(..))")
        public void commit() {
         
            try {
                dbAssit.getCurrentConnection().commit();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie das annotationsbasierte AOP von Java Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen