wuheng 2 years ago
parent
commit
76227506af

+ 6 - 0
day03/pom.xml

@@ -49,6 +49,12 @@
             <version>5.3.22</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aspects</artifactId>
+            <version>5.3.22</version>
+        </dependency>
+
     </dependencies>
 
 

+ 2 - 1
day03/src/main/java/com/lovecoding/jdbc/SpringConfig.java

@@ -12,13 +12,14 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @Configuration
 @ComponentScan("com.lovecoding")
 @EnableTransactionManagement
+@EnableAspectJAutoProxy
 public class SpringConfig {
 
     @Bean
     public DruidDataSource getDruidDataSource(){
         DruidDataSource druidDataSource = new DruidDataSource();
         druidDataSource.setUsername("root");
-        druidDataSource.setUrl("jdbc:mysql://127.0.0.1:13306/test?characterEncoding=utf-8&useSSL=false");
+        druidDataSource.setUrl("jdbc:mysql://127.0.0.1:13306/test?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true");
         druidDataSource.setPassword("0JZBdtlYoiOepddh");
         druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
         return druidDataSource;

+ 11 - 0
day03/src/main/java/com/lovecoding/jdbc/anno/Logs.java

@@ -0,0 +1,11 @@
+package com.lovecoding.jdbc.anno;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD}) //我们这个注解可以用在什么元素上
+@Retention(RetentionPolicy.RUNTIME) //声明周期
+public @interface Logs {
+}

+ 31 - 0
day03/src/main/java/com/lovecoding/jdbc/aop/LogsAop.java

@@ -0,0 +1,31 @@
+package com.lovecoding.jdbc.aop;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.stereotype.Component;
+
+@Component
+@Aspect
+public class LogsAop {
+
+    @Pointcut("@annotation(com.lovecoding.jdbc.anno.Logs)")
+    public void log(){}
+
+    @Around("log()")
+    public Object aroundLog(ProceedingJoinPoint point){
+        Object proceed = null;
+        Signature signature = point.getSignature();
+        try {
+            //我们在这里就可以记录日志了
+            System.out.println( "[日志] :" + signature.getName() + "方法即将执行" );
+            proceed = point.proceed(point.getArgs());
+            System.out.println( "[日志] :" + signature.getName() + "方法执行结束啦" );
+        } catch (Throwable e) {
+            System.out.println( "[日志] :" + signature.getName() + "执行发生异常" + e.getMessage() );
+        }
+        return proceed;
+    }
+}

+ 2 - 0
day03/src/main/java/com/lovecoding/jdbc/dao/BookImpl.java

@@ -1,5 +1,6 @@
 package com.lovecoding.jdbc.dao;
 
+import com.lovecoding.jdbc.anno.Logs;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -17,6 +18,7 @@ public class BookImpl implements Book {
      * @return
      */
     @Override
+    //@Logs
     public int getBook(int bookid) {
         Object [] id = {bookid};
         Integer integer = jdbcTemplate.queryForObject(

+ 2 - 0
day03/src/main/java/com/lovecoding/jdbc/dao/UserImpl.java

@@ -1,5 +1,6 @@
 package com.lovecoding.jdbc.dao;
 
+import com.lovecoding.jdbc.anno.Logs;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Repository;
@@ -16,6 +17,7 @@ public class UserImpl implements User {
      * @param uid
      */
     @Override
+    //@Logs
     public void balance(int value, int uid) {
         jdbcTemplate.update(
                 "UPDATE t_user set balance = balance - ? WHERE user_id = ?",

+ 4 - 1
day03/src/main/java/com/lovecoding/jdbc/service/UserBuyBookServiceImpl.java

@@ -1,5 +1,6 @@
 package com.lovecoding.jdbc.service;
 
+import com.lovecoding.jdbc.anno.Logs;
 import com.lovecoding.jdbc.dao.Book;
 import com.lovecoding.jdbc.dao.User;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +25,8 @@ public class UserBuyBookServiceImpl implements UserBuyBookService{
     private User user;
 
     @Override
-    //@Transactional
+    @Transactional
+    @Logs
     public void buyBook(int uid, int bookid) {
         //查询书的价格
         int price = book.getBook(bookid);
@@ -32,5 +34,6 @@ public class UserBuyBookServiceImpl implements UserBuyBookService{
         this.book.subBook(bookid);
         //扣减用户钱包
         user.balance( price, uid );
+        System.out.println( "购买书本成功!" );
     }
 }