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

So konfigurieren Sie das annotationsbasierte AOP von Java Spring

PHPz
Freigeben: 2023-05-17 17:37:06
nach vorne
1094 Leute haben es durchsucht

    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>
    Nach dem Login kopieren

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

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

    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 ;
      }
      Nach dem Login kopieren
    • 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>
    Nach dem Login kopieren

    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 ;
        }
        Nach dem Login kopieren
      • 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 ;
        }
        Nach dem Login kopieren
      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();
            }
        }
        Nach dem Login kopieren
      • 5 Konfigurationsmethode ohne XML# 🎜🎜 #
        //提交事务
        @AfterReturning("execution(* com.itheima.service.impl.*.*(..))")
        public void commit() {
         
            try {
                dbAssit.getCurrentConnection().commit();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        Nach dem Login kopieren

        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!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage