diff --git a/springboot-aop-quickstart/pom.xml b/springboot-aop-quickstart/pom.xml new file mode 100644 index 0000000..43157c1 --- /dev/null +++ b/springboot-aop-quickstart/pom.xml @@ -0,0 +1,93 @@ + + + 4.0.0 + com.inmind + springboot-aop-quickstart + 0.0.1-SNAPSHOT + springboot-aop-quickstart + springboot-aop-quickstart + + 11 + UTF-8 + UTF-8 + 2.7.6 + + + + org.springframework.boot + spring-boot-starter-web + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.3.0 + + + + com.mysql + mysql-connector-j + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.inmind.SpringbootAopQuickstartApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/SpringbootAopQuickstartApplication.java b/springboot-aop-quickstart/src/main/java/com/inmind/SpringbootAopQuickstartApplication.java new file mode 100644 index 0000000..a15ce6c --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/SpringbootAopQuickstartApplication.java @@ -0,0 +1,13 @@ +package com.inmind; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringbootAopQuickstartApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringbootAopQuickstartApplication.class, args); + } + +} diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/aop/TimeAspect.java b/springboot-aop-quickstart/src/main/java/com/inmind/aop/TimeAspect.java new file mode 100644 index 0000000..2bc0cdb --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/aop/TimeAspect.java @@ -0,0 +1,27 @@ +package com.inmind.aop; + +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; + +@Component +@Aspect +@Slf4j +public class TimeAspect { + + @Around("execution(* com.inmind.service.*.*(..))")//表示AOP作用于com.inmind.service下的所有的类中所有的方法,参数是0或多个 + public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable { + //1.记录开始时间 + long begin = System.currentTimeMillis(); + //2.调用原始方法 + Object result = joinPoint.proceed(); + //3.记录结束时间,计算出方法耗时 + long end = System.currentTimeMillis(); + log.info(joinPoint.getSignature()+"业务方法,执行耗时为:{},ms",end-begin); + + //如果是环绕通知Around,一定要返回结果,否则原始方法就获取不到返回值数据 + return result; + } +} diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/controller/DeptController.java b/springboot-aop-quickstart/src/main/java/com/inmind/controller/DeptController.java new file mode 100644 index 0000000..838bb61 --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/controller/DeptController.java @@ -0,0 +1,52 @@ +package com.inmind.controller; + +import com.inmind.pojo.Dept; +import com.inmind.pojo.Result; +import com.inmind.service.DeptService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/depts") +public class DeptController { + + @Autowired + private DeptService deptService; + + //查询全部部门 + @GetMapping + public Result list(){ + List deptList = deptService.list(); + return Result.success(deptList); + } + + //删除部门 + @DeleteMapping("/{id}") + public Result delete(@PathVariable Integer id) { + deptService.delete(id); + return Result.success(); + } + + //添加部门 + @PostMapping + public Result save(@RequestBody Dept dept){ + deptService.save(dept); + return Result.success(); + } + + //根据ID查询 + @GetMapping("/{id}") + public Result getById(@PathVariable Integer id){ + Dept dept = deptService.getById(id); + return Result.success(dept); + } + + //更新部门 + @PutMapping + public Result update(@RequestBody Dept dept){ + deptService.update(dept); + return Result.success(); + } +} diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/mapper/DeptMapper.java b/springboot-aop-quickstart/src/main/java/com/inmind/mapper/DeptMapper.java new file mode 100644 index 0000000..e6b4ec1 --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/mapper/DeptMapper.java @@ -0,0 +1,32 @@ +package com.inmind.mapper; + +import com.inmind.pojo.Dept; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface DeptMapper { + //查询全部部门数据 + @Select("select * from dept") + List list(); + + //删除部门 + @Delete("delete from dept where id = #{id}") + void delete(Integer id); + + //新增部门 + @Insert("insert into dept(name, create_time, update_time) values (#{name},#{createTime},#{updateTime})") + void save(Dept dept); + + //根据ID查询 + @Select("select * from dept where id = #{id}") + Dept getById(Integer id); + + //更新部门 + @Update("update dept set name = #{name}, update_time = #{updateTime} where id = #{id}") + void update(Dept dept); +} + + + diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/pojo/Dept.java b/springboot-aop-quickstart/src/main/java/com/inmind/pojo/Dept.java new file mode 100644 index 0000000..fda9fa8 --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/pojo/Dept.java @@ -0,0 +1,17 @@ +package com.inmind.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Dept { + private Integer id; + private String name; + private LocalDateTime createTime; + private LocalDateTime updateTime; +} diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/pojo/Result.java b/springboot-aop-quickstart/src/main/java/com/inmind/pojo/Result.java new file mode 100644 index 0000000..b7e5d1d --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/pojo/Result.java @@ -0,0 +1,27 @@ +package com.inmind.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Result { + private Integer code;//响应码,1 代表成功; 0 代表失败 + private String msg; //响应码 描述字符串 + private Object data; //返回的数据 + + //增删改 成功响应 + public static Result success(){ + return new Result(1,"success",null); + } + //查询 成功响应 + public static Result success(Object data){ + return new Result(1,"success",data); + } + //失败响应 + public static Result error(String msg){ + return new Result(0,msg,null); + } +} diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/service/DeptService.java b/springboot-aop-quickstart/src/main/java/com/inmind/service/DeptService.java new file mode 100644 index 0000000..1162166 --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/service/DeptService.java @@ -0,0 +1,38 @@ +package com.inmind.service; + +import com.inmind.pojo.Dept; + +import java.util.List; + +public interface DeptService { + /** + * 查询所有的部门数据 + * @return + */ + List list(); + + /** + * 删除部门 + * @param id + */ + void delete(Integer id); + + /** + * 新增部门 + * @param dept + */ + void save(Dept dept); + + /** + * 根据ID查询 + * @param id + * @return + */ + Dept getById(Integer id); + + /** + * 更新部门 + * @param dept + */ + void update(Dept dept); +} diff --git a/springboot-aop-quickstart/src/main/java/com/inmind/service/impl/DeptServiceImpl.java b/springboot-aop-quickstart/src/main/java/com/inmind/service/impl/DeptServiceImpl.java new file mode 100644 index 0000000..acaa1cc --- /dev/null +++ b/springboot-aop-quickstart/src/main/java/com/inmind/service/impl/DeptServiceImpl.java @@ -0,0 +1,53 @@ +package com.inmind.service.impl; + +import com.inmind.aop.MyLog; +import com.inmind.mapper.DeptMapper; +import com.inmind.pojo.Dept; +import com.inmind.service.DeptService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; + +@Slf4j +@Service +public class DeptServiceImpl implements DeptService { + @Autowired + private DeptMapper deptMapper; + + @Override + @MyLog + public List list() { + List deptList = deptMapper.list(); + return deptList; + } + + @Override + @MyLog + public void delete(Integer id) { + //1. 删除部门 + deptMapper.delete(id); + } + + @Override + public void save(Dept dept) { + dept.setCreateTime(LocalDateTime.now()); + dept.setUpdateTime(LocalDateTime.now()); + deptMapper.save(dept); + } + + @Override + public Dept getById(Integer id) { +// int i = 1/0; + return deptMapper.getById(id); + } + + @Override + public void update(Dept dept) { + dept.setUpdateTime(LocalDateTime.now()); + deptMapper.update(dept); + } +} diff --git a/springboot-aop-quickstart/src/main/resources/application.yml b/springboot-aop-quickstart/src/main/resources/application.yml new file mode 100644 index 0000000..2bea66d --- /dev/null +++ b/springboot-aop-quickstart/src/main/resources/application.yml @@ -0,0 +1,10 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/tlias + username: root + password: 1234 +mybatis: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + map-underscore-to-camel-case: true \ No newline at end of file diff --git a/springboot-aop-quickstart/src/main/resources/static/index.html b/springboot-aop-quickstart/src/main/resources/static/index.html new file mode 100644 index 0000000..89bb8ba --- /dev/null +++ b/springboot-aop-quickstart/src/main/resources/static/index.html @@ -0,0 +1,6 @@ + + +

hello word!!!

+

this is a html page

+ + \ No newline at end of file diff --git a/springboot-aop-quickstart/src/test/java/com/inmind/SpringbootAopQuickstartApplicationTests.java b/springboot-aop-quickstart/src/test/java/com/inmind/SpringbootAopQuickstartApplicationTests.java new file mode 100644 index 0000000..52a8bdb --- /dev/null +++ b/springboot-aop-quickstart/src/test/java/com/inmind/SpringbootAopQuickstartApplicationTests.java @@ -0,0 +1,32 @@ +package com.inmind; + +import com.inmind.service.DeptService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SpringbootAopQuickstartApplicationTests { + + @Autowired + private DeptService deptService; + + @Test + void contextLoads() { + } + + @Test + void testAopDelete() { + deptService.delete(10); + } + + @Test + void testAopList() { + deptService.list(); + } + + @Test + void testAopGet() { + deptService.getById(10); + } +}