AOP实现日志的打印与存储
1、啥是aop啊?
面向切面编程,我们在开发过程中经常会用到日志和数据库关闭等一系列操作,而这些是与我们业务逻辑代码无关的操作,把这些混在业务的实现上会影响我们开发,所以aop出现了。它将一个程序看成一个大汉堡,把青菜(日志等)抽取出来全部放到一个盘(类)中,要吃汉堡时可以将青菜(日志等)放在培根(业务)前后,你想多吃青菜(使用日志等功能)就可以多吃,不想就不放。而且不仅可以放到一个汉堡中,其它口味的汉堡也可以放。
2、为啥使用aop啊?
当然是方便操作啊,框架的出现都是让程序员少写代码的,那些重复的代码可以提取出来,要用时织入(“放到”)到业务代码前后就行了,你想,如果一个系统开始没有日志功能,我都快开发完了,然后项目经理说,ok,咱要增加日志的功能,那这时候咋办呢?总不能一个一个类的加代码吧,这不仅破坏了“开-闭”原则,也增加了秃头的可能啊(加班)。
3、aop的具体实现(不虚)
目标:使用aop将用户访问的信息都给我存储起来(估计很多公司都会这样干吧,细思极恐!!!)
-
创建Maven项目(懂的都懂)
-
添加pom依赖(加就完事了alg)
<!-- 定义依赖的版本号 --> <properties> <junit.version>4.12</junit.version> <spring.version>5.2.9.RELEASE</spring.version> <pagehelper.version>5.1.8</pagehelper.version> <servlet-api.version>2.5</servlet-api.version> <dubbo.version>2.8.4</dubbo.version> <zookeeper.version>3.4.7</zookeeper.version> <zkclient.version>0.1</zkclient.version> <mybatis.version>3.4.5</mybatis.version> <mybatis.spring.version>1.3.1</mybatis.spring.version> <mybatis.paginator.version>1.2.15</mybatis.paginator.version> <mysql.version>5.1.32</mysql.version> <druid.version>1.0.9</druid.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> <jackson.version>2.9.5</jackson.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <!-- 定义依赖 --> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency>