SpringAOP日志记录一下,代码就贴完整代码,一劳永逸。
SpringAOP面向切面编程,拦截指定代码,对该代码进行增强。
SpringAOP实现日志很简单
- 第一种方式配置XML文件
- 在Spring的XML文件中配置拦截
- 定义增强代码就OK了
- 运行结果
- 第二种方式注解
- 配置Spring.xml文件
1 <!-- 声明自动为spring容器中那些配置@aspectJ切面的bean创建代理 -->
2 <aop:aspectj-autoproxy proxy-target-class="true" />
- 定义增强代码
1 package com.xxw.util;
2
3 import org.aspectj.lang.JoinPoint;
4 import org.aspectj.lang.annotation.After;
5 import org.aspectj.lang.annotation.Aspect;
6 import org.aspectj.lang.annotation.Before;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.springframework.stereotype.Component;
10
11 import java.text.SimpleDateFormat;
12 import java.util.Date;
13
14 @Aspect
15 @Component
16 public class AnnotationLoggerAspect {
17
18 private final Logger logger = LoggerFactory.getLogger(LoggerAspect.class);
19
20 /**
21 * 前置信息
22 * @param joinPoint
23 * @throws Exception
24 */
25 @Before(value = "execution(* com.xxw.controller.*.*(..))")
26 public void logBefore(JoinPoint joinPoint) throws Exception{
27 logger.info(getInformation(joinPoint)+"---- start");
28 }
29
30 /**
31 * 后置信息
32 * @param joinPoint
33 * @throws Exception
34 */
35 @After(value = "execution(* com.xxw.controller.*.*(..))")
36 public void logAfter(JoinPoint joinPoint) throws Exception{
37 logger.info(getInformation(joinPoint)+"---- end");
38 }
39
40 /**
41 * 生成描述信息
42 * @param joinPoint
43 * @return
44 * @throws Exception
45 */
46 private String getInformation(JoinPoint joinPoint) throws Exception{
47 // 获取类名
48 String targetName = joinPoint.getTarget().getClass().getName();
49 // 获取方法名
50 String methodName = joinPoint.getSignature().getName();
51 // 当前时间
52 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
53 return sdf.format(new Date())+"----:"+targetName+"."+methodName;
54 }
55
56 }
- 运行结果
下面贴完整代码
一、大概项目目录结构
二、各种配置文件
- jdbc.properties
1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://127.0.0.1:3306/company
3 username=root
4 password=root
5
6 # 定义初始化连接数
7 initialSize=0
8 # 定义最大连接数
9 maxActive=20
10 # 定义最大空闲
11 maxIdle=20
12 # 定义最小空闲
13 minIdle=1
14 # 定义最长等待时间
15 maxWait=60000
- View Code
- log4j.properties
1 ########################################################################
2 ## 日志输出到控制台
3 ########################################################################
4 #定义LOG输出级别
5 log4j.rootLogger=DEBUG,Console,File
6 #定义日志输出目的地为控制台
7 log4j.appender.Console=org.apache.log4j.ConsoleAppender
8 log4j.appender.Console.Target=System.out
9 #可以灵活地指定日志输出格式,下面一行是指定具体的格式
10 log4j.appender.Console.layout = org.apache.log4j.PatternLayout
11 log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
12
13 ########################################################################
14 ## 日志输出到物理文件
15 ########################################################################
16 #文件大小到达指定尺寸的时候产生一个新的文件
17 log4j.appender.File = org.apache.log4j.RollingFileAppender
18 #指定输出目录
19 log4j.appender.File.File = logs/yyyy-MM-dd.log
20 #定义文件最大大小
21 log4j.appender.File.MaxFileSize = 10MB
22 # 输出所有日志,如果换成DEBUG表示输出DEBUG以上级别日志
23 log4j.appender.File.Threshold = DEBUG
24 log4j.appender.File.layout = org.apache.log4j.PatternLayout
25 log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
26 ########################################################################
- View Code
- applicationContext-DataSource.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/aop
9 http://www.springframework.org/schema/aop/spring-aop.xsd
10 http://www.springframework.org/schema/tx
11 http://www.springframework.org/schema/tx/spring-tx.xsd">
12
13 <!-- 引入JDBC 配置文件 -->
14 <bean id="propertyConfigure" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
15 <property name="location" value="classpath:jdbc.properties" />
16 </bean>
17
18 <!-- 配置数据源 -->
19 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
20 <property name="driverClassName" value="${driver}" />
21 <property name="url" value="${url}" />
22 <property name="username" value="${username}" />
23 <property name="password" value="${password}" />
24 <property name="initialSize" value="${initialSize}" />
25 <property name="maxActive" value="${maxActive}" />
26 <property name="maxIdle" value="${maxIdle}" />
27 <property name="minIdle" value="${minIdle}" />
28 <property name="maxWait" value="${maxWait}" />
29 </bean>
30
31 <!-- 配置mybatis -->
32 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
33 <property name="dataSource" ref="dataSource" />
34 <property name="configLocation" value="classpath:mybatis-config.xml" />
35 <!-- 自动扫描mapping.xml文件 -->
36 <property name="mapperLocations" value="classpath:com/xxw/mapper/*.xml" />
37 </bean>
38
39 <!-- sql 会话模板 -->
40 <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" >
41 <constructor-arg ref="sqlSessionFactory" />
42 </bean>
43
44 <!-- 事物处理 -->
45 <aop:config>
46 <aop:pointcut id="pc" expression="execution(* com.xxw.service..*(..))" />
47 <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />
48 </aop:config>
49 <tx:advice id="txAdvice" transaction-manager="transactionManager">
50 <tx:attributes>
51 <tx:method name="delete*" propagation="REQUIRED" />
52 <tx:method name="insert*" propagation="REQUIRED" />
53 <tx:method name="update*" propagation="REQUIRED" />
54 <tx:method name="save*" propagation="REQUIRED" />
55 <tx:method name="*" propagation="SUPPORTS" />
56 </tx:attributes>
57 </tx:advice>
58 <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
59 <property name="dataSource" ref="dataSource" />
60 </bean>
61
62 </beans>
- View Code
- applicationContext-Main.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context.xsd">
9
10 <!-- 启用注解 -->
11 <context:annotation-config />
12
13 <!-- 启用组件扫描, 排除#controller组件,该组件由ApplicationContext-MVC.xml配置文件扫描 -->
14 <context:component-scan base-package="com.xxw">
15 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
16 </context:component-scan>
17
18 <!-- 引入DataSource配置文件 -->
19 <import resource="classpath*:applicationContext-DataSource.xml" />
20
21 </beans>
- View Code
- applicationContext-MVC.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xmlns:mvc="http://www.springframework.org/schema/mvc"
6 xmlns:aop="http://www.springframework.org/schema/aop"
7 xsi:schemaLocation="http://www.springframework.org/schema/beans
8 http://www.springframework.org/schema/beans/spring-beans.xsd
9 http://www.springframework.org/schema/context
10 http://www.springframework.org/schema/context/spring-context.xsd
11 http://www.springframework.org/schema/mvc
12 http://www.springframework.org/schema/mvc/spring-mvc.xsd
13 http://www.springframework.org/schema/aop
14 http://www.springframework.org/schema/aop/spring-aop.xsd">
15
16 <!-- 使用注解开发, 自动扫描包 -->
17 <context:component-scan base-package="com.xxw.controller" />
18 <!-- Spring MVC 为 @Controller分发请求所必需的 -->
19 <mvc:annotation-driven />
20 <!-- 静态资源访问 (交由DispatcherServlet 来处理静态资源访问) -->
21 <mvc:default-servlet-handler />
22 <!-- 更智能的静态访问(js/image)的访问(有SpringMVC自己来处理静态资源访问) -->
23 <mvc:resources mapping="/static/js/**/" location="/static/js/**" />
24 <mvc:resources mapping="/static/image/**/" location="/static/image/**" />
25
26 <!-- 设置proxy-target-class属性为true,基于cglib动态代理(Spring的代理)
27 设置proxy-target-class属性为false,基于JavaSE代理(JDK的动态代理)
28 -->
29 <aop:config proxy-target-class="true" />
30 <!-- 注入自定义日志类 -->
31 <bean id="logAspect" class="com.xxw.util.LoggerAspect" />
32 <!-- 使用Spring AOP实现日志管理 -->
33 <aop:config>
34 <!-- 定义切面 -->
35 <aop:aspect id="logAspect" ref="logAspect">
36 <!-- 定义切入点 -->
37 <aop:pointcut id="pointcut" expression="execution(* com.xxw.controller.*.*(..))" />
38 <!-- 前值增强 -->
39 <aop:before method="logBefore" pointcut-ref="pointcut" />
40 <!-- 后置增强 -->
41 <aop:after method="logAfter" pointcut-ref="pointcut" />
42 <!-- 环绕增强 -->
43 <!--<aop:around method="logAround" pointcut-ref="pointcut" />-->
44 </aop:aspect>
45 </aop:config>
46
47 <!-- 上传拦截,配置文件上传 -->
48 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
49 <!-- 默认编码 -->
50 <property name="defaultEncoding" value="utf-8" />
51 <!-- 文件大小最大字节 -->
52 <property name="maxUploadSize" value="10485760000" />
53 <!-- 内存中的最大值 -->
54 <property name="maxInMemorySize" value="4096" />
55 <!-- 启用是为了推迟文件解析,以便捕获文件大小异常 -->
56 <property name="resolveLazily" value="true" />
57 </bean>
58
59 <!-- 视图解析器 -->
60 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
61 <!-- 跳转的文件的前缀 -->
62 <property name="prefix" value="/WEB-INF/jsp/" />
63 <!-- 跳转的文件的后缀 -->
64 <property name="suffix" value=".jsp" />
65 </bean>
66
67 </beans>
- mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
3 <configuration>
4
5 <typeAliases>
6 <typeAlias type="com.xxw.pojo.User" alias="User" />
7 </typeAliases>
8
9 </configuration>
- View Code
- web.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE web-app PUBLIC
3 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
4 "http://java.sun.com/dtd/web-app_2_3.dtd" >
5
6 <web-app>
7
8 <display-name>Archetype Created Web Application</display-name>
9
10 <!-- Spring -->
11 <context-param>
12 <param-name>contextConfigLocation</param-name>
13 <param-value>classpath:applicationContext-Main.xml</param-value>
14 </context-param>
15
16 <!-- Log4j -->
17 <context-param>
18 <param-name>log4jConfigLocation</param-name>
19 <param-value>classpath:log4j.properties</param-value>
20 </context-param>
21 <context-param>
22 <param-name>log4jRefreshInterval</param-name>
23 <param-value>3000</param-value>
24 </context-param>
25
26 <!-- 编码格式 -->
27 <filter>
28 <filter-name>characterEncodingFilter</filter-name>
29 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
30 <init-param>
31 <param-name>encoding</param-name>
32 <param-value>UTF-8</param-value>
33 </init-param>
34 <init-param>
35 <param-name>forceEncoding</param-name>
36 <param-value>true</param-value>
37 </init-param>
38 </filter>
39 <filter-mapping>
40 <filter-name>characterEncodingFilter</filter-name>
41 <url-pattern>/*</url-pattern>
42 </filter-mapping>
43
44 <!-- Spring 监听 -->
45 <listener>
46 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
47 </listener>
48
49 <!-- 监听Log4J 配置文件 -->
50 <listener>
51 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
52 </listener>
53
54 <!-- Servlet -->
55 <servlet>
56 <servlet-name>Spring</servlet-name>
57 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
58 <init-param>
59 <param-name>contextConfigLocation</param-name>
60 <param-value>classpath:applicationContext-MVC.xml</param-value>
61 </init-param>
62 <load-on-startup>1</load-on-startup>
63 </servlet>
64 <servlet-mapping>
65 <servlet-name>Spring</servlet-name>
66 <url-pattern>/</url-pattern>
67 </servlet-mapping>
68
69 <!-- 初始化默认访问页面 -->
70 <welcome-file-list>
71 <welcome-file>index.jsp</welcome-file>
72 </welcome-file-list>
73
74 </web-app>
- View Code
- pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>com.xxw</groupId>
8 <artifactId>MVCJedis</artifactId>
9 <version>1.0-SNAPSHOT</version>
10 <packaging>war</packaging>
11
12 <name>MVCJedis Maven Webapp</name>
13 <!-- FIXME change it to the project's website -->
14 <url>http://www.example.com</url>
15
16 <properties>
17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18 <!-- spring 版本号 -->
19 <spring.version>4.0.2.RELEASE</spring.version>
20 <!-- mybatis 版本号 -->
21 <mybatis.version>3.2.6</mybatis.version>
22 <!-- log4j日志文件管理包版本 -->
23 <slf4j.version>1.7.7</slf4j.version>
24 <log4j.version>1.2.17</log4j.version>
25 </properties>
26
27 <!-- 依赖jar包 -->
28 <dependencies>
29
30 <!-- junit -->
31 <dependency>
32 <groupId>junit</groupId>
33 <artifactId>junit</artifactId>
34 <version>4.11</version>
35 <!-- 表示开发时引入,发布时不会加载此包 -->
36 <scope>test</scope>
37 </dependency>
38
39 <dependency>
40 <groupId>org.aspectj</groupId>
41 <artifactId>aspectjweaver</artifactId>
42 <version>1.7.4</version>
43 </dependency>
44
45 <!-- spring 核心包 -->
46 <dependency>
47 <groupId>org.springframework</groupId>
48 <artifactId>spring-core</artifactId>
49 <version>${spring.version}</version>
50 </dependency>
51 <dependency>
52 <groupId>org.springframework</groupId>
53 <artifactId>spring-web</artifactId>
54 <version>${spring.version}</version>
55 </dependency>
56 <dependency>
57 <groupId>org.springframework</groupId>
58 <artifactId>spring-oxm</artifactId>
59 <version>${spring.version}</version>
60 </dependency>
61 <dependency>
62 <groupId>org.springframework</groupId>
63 <artifactId>spring-tx</artifactId>
64 <version>${spring.version}</version>
65 </dependency>
66 <dependency>
67 <groupId>org.springframework</groupId>
68 <artifactId>spring-jdbc</artifactId>
69 <version>${spring.version}</version>
70 </dependency>
71 <dependency>
72 <groupId>org.springframework</groupId>
73 <artifactId>spring-webmvc</artifactId>
74 <version>${spring.version}</version>
75 </dependency>
76 <dependency>
77 <groupId>org.springframework</groupId>
78 <artifactId>spring-aop</artifactId>
79 <version>${spring.version}</version>
80 </dependency>
81 <dependency>
82 <groupId>org.springframework</groupId>
83 <artifactId>spring-context-support</artifactId>
84 <version>${spring.version}</version>
85 </dependency>
86 <dependency>
87 <groupId>org.springframework</groupId>
88 <artifactId>spring-test</artifactId>
89 <version>${spring.version}</version>
90 </dependency>
91
92 <!-- mybatis 核心包 -->
93 <dependency>
94 <groupId>org.mybatis</groupId>
95 <artifactId>mybatis</artifactId>
96 <version>${mybatis.version}</version>
97 </dependency>
98
99 <!-- mybatis/spring 包 -->
100 <dependency>
101 <groupId>org.mybatis</groupId>
102 <artifactId>mybatis-spring</artifactId>
103 <version>1.2.2</version>
104 </dependency>
105
106 <!-- javaEE jar -->
107 <dependency>
108 <groupId>javax</groupId>
109 <artifactId>javaee-api</artifactId>
110 <version>7.0</version>
111 <scope>provided</scope>
112 </dependency>
113
114 <!-- mysql 数据库连接 jar -->
115 <dependency>
116 <groupId>mysql</groupId>
117 <artifactId>mysql-connector-java</artifactId>
118 <version>5.1.30</version>
119 </dependency>
120
121 <!-- dbcp jar, 用来在applicationContext.xml中配置数据库 -->
122 <dependency>
123 <groupId>commons-dbcp</groupId>
124 <artifactId>commons-dbcp</artifactId>
125 <version>1.2.2</version>
126 </dependency>
127
128 <!-- JSTL标签类库 -->
129 <dependency>
130 <groupId>jstl</groupId>
131 <artifactId>jstl</artifactId>
132 <version>1.2</version>
133 </dependency>
134
135 <!-- 日志文件管理包 -->
136 <dependency>
137 <groupId>log4j</groupId>
138 <artifactId>log4j</artifactId>
139 <version>${log4j.version}</version>
140 </dependency>
141 <!-- 格式化对象,方便输出日志 -->
142 <dependency>
143 <groupId>com.alibaba</groupId>
144 <artifactId>fastjson</artifactId>
145 <version>1.1.41</version>
146 </dependency>
147 <dependency>
148 <groupId>org.slf4j</groupId>
149 <artifactId>slf4j-api</artifactId>
150 <version>${slf4j.version}</version>
151 </dependency>
152 <dependency>
153 <groupId>org.slf4j</groupId>
154 <artifactId>slf4j-log4j12</artifactId>
155 <version>${slf4j.version}</version>
156 </dependency>
157
158 <!-- 映射JSON -->
159 <dependency>
160 <groupId>org.codehaus.jackson</groupId>
161 <artifactId>jackson-mapper-asl</artifactId>
162 <version>1.9.13</version>
163 </dependency>
164
165 <!-- 上传组件包 -->
166 <dependency>
167 <groupId>commons-fileupload</groupId>
168 <artifactId>commons-fileupload</artifactId>
169 <version>1.3.1</version>
170 </dependency>
171 <dependency>
172 <groupId>commons-io</groupId>
173 <artifactId>commons-io</artifactId>
174 <version>2.4</version>
175 </dependency>
176 <dependency>
177 <groupId>commons-codec</groupId>
178 <artifactId>commons-codec</artifactId>
179 <version>1.9</version>
180 </dependency>
181
182 <!-- jedis jar -->
183 <dependency>
184 <groupId>redis.clients</groupId>
185 <artifactId>jedis</artifactId>
186 <version>2.9.0</version>
187 </dependency>
188
189 </dependencies>
190
191 <build>
192 <finalName>MVCJedis</finalName>
193 <plugins>
194 <plugin>
195 <groupId>org.apache.maven.plugins</groupId>
196 <artifactId>maven-compiler-plugin</artifactId>
197 <configuration>
198 <source>6</source>
199 <target>6</target>
200 </configuration>
201 </plugin>
202 </plugins>
203 </build>
204 </project>
- View Code
三、各种Java代码
- UserController.java
1 package com.xxw.controller;
2
3 import com.xxw.pojo.User;
4 import com.xxw.service.IUserService;
5 import org.springframework.stereotype.Controller;
6 import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.RequestMethod;
8 import org.springframework.web.bind.annotation.ResponseBody;
9
10 import javax.annotation.Resource;
11 import java.util.List;
12
13 @Controller
14 @RequestMapping(value = "/user")
15 public class UserController {
16
17 @Resource(name = "IUserService")
18 private IUserService service;
19
20 @RequestMapping(value = "getUserList", method = RequestMethod.GET)
21 @ResponseBody
22 public Object getUserList() {
23 List<User> list = null;
24 try {
25 list = service.getUserList();
26 } catch (Exception e) {
27 e.printStackTrace();
28 }
29
30 return list;
31 }
32
33 }
- View Code
- IUserService.java
1 package com.xxw.service;
2
3 import com.xxw.pojo.User;
4
5 import java.util.List;
6
7 public interface IUserService {
8
9 List<User> getUserList() throws Exception;
10
11 }
- View Code
- UserServiceImpl.java
1 package com.xxw.service.impl;
2
3 import com.xxw.dao.UserDao;
4 import com.xxw.pojo.User;
5 import com.xxw.service.IUserService;
6 import org.springframework.stereotype.Service;
7
8 import javax.annotation.Resource;
9 import java.util.List;
10
11 @Service(value = "IUserService")
12 public class UserServiceImpl implements IUserService {
13
14 @Resource(name = "UserDao")
15 private UserDao dao;
16
17
18 @Override
19 public List<User> getUserList()throws Exception {
20 return dao.findUserList();
21 }
22
23 }
- View Code
- UserDao.java
1 package com.xxw.dao;
2
3 import com.xxw.pojo.User;
4 import org.mybatis.spring.SqlSessionTemplate;
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Repository;
7
8 import java.util.List;
9
10 @Repository(value = "UserDao")
11 public class UserDao {
12
13 @Autowired
14 SqlSessionTemplate sqlSessionTemplate;
15
16 public List<User> findUserList()throws Exception{
17 return sqlSessionTemplate.selectList("UserMapper.findUserList");
18 }
19
20 }
- View Code
- User.java
1 package com.xxw.pojo;
2
3 public class User {
4
5 private String id = null; // 用户ID
6 private String name = null; // 用户名
7 private int age = -1; // 年龄
8 private String gender = null; // 性别
9 private String address = null; // 用户地址
10 private String phone = null; // 电话
11
12 public String getId() {
13 return id;
14 }
15
16 public void setId(String id) {
17 this.id = id;
18 }
19
20 public String getName() {
21 return name;
22 }
23
24 public void setName(String name) {
25 this.name = name;
26 }
27
28 public int getAge() {
29 return age;
30 }
31
32 public void setAge(int age) {
33 this.age = age;
34 }
35
36 public String getGender() {
37 return gender;
38 }
39
40 public void setGender(String gender) {
41 this.gender = gender;
42 }
43
44 public String getAddress() {
45 return address;
46 }
47
48 public void setAddress(String address) {
49 this.address = address;
50 }
51
52 public String getPhone() {
53 return phone;
54 }
55
56 public void setPhone(String phone) {
57 this.phone = phone;
58 }
59 }
- View Code
- LoggerAspect
1 package com.xxw.util;
2
3 import org.aspectj.lang.JoinPoint;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6
7 import java.text.SimpleDateFormat;
8 import java.util.Date;
9
10 public class LoggerAspect {
11
12 private final Logger logger = LoggerFactory.getLogger(LoggerAspect.class);
13
14 /**
15 * 前置信息
16 * @param joinPoint
17 * @throws Exception
18 */
19 public void logBefore(JoinPoint joinPoint) throws Exception{
20 logger.info(getInformation(joinPoint)+"---- start");
21 }
22
23 /**
24 * 后置信息
25 * @param joinPoint
26 * @throws Exception
27 */
28 public void logAfter(JoinPoint joinPoint) throws Exception{
29 logger.info(getInformation(joinPoint)+"---- end");
30 }
31
32 /**
33 * 生成描述信息
34 * @param joinPoint
35 * @return
36 * @throws Exception
37 */
38 private String getInformation(JoinPoint joinPoint) throws Exception{
39 // 获取类名
40 String targetName = joinPoint.getTarget().getClass().getName();
41 // 获取方法名
42 String methodName = joinPoint.getSignature().getName();
43 // 当前时间
44 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
45 return sdf.format(new Date())+"----:"+targetName+"."+methodName;
46 }
47
48 }
AnnotationLoggerAspect
1 package com.xxw.util;
2
3 import org.aspectj.lang.JoinPoint;
4 import org.aspectj.lang.annotation.After;
5 import org.aspectj.lang.annotation.Aspect;
6 import org.aspectj.lang.annotation.Before;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.springframework.stereotype.Component;
10
11 import java.text.SimpleDateFormat;
12 import java.util.Date;
13
14 @Aspect
15 @Component
16 /**
17 * 注解增强
18 */
19 public class AnnotationLoggerAspect {
20
21 private final Logger logger = LoggerFactory.getLogger(LoggerAspect.class);
22
23 /**
24 * 前置信息
25 * @param joinPoint
26 * @throws Exception
27 */
28 @Before(value = "execution(* com.xxw.controller.*.*(..))")
29 public void logBefore(JoinPoint joinPoint) throws Exception{
30 logger.info(getInformation(joinPoint)+"---- start");
31 }
32
33 /**
34 * 后置信息
35 * @param joinPoint
36 * @throws Exception
37 */
38 @After(value = "execution(* com.xxw.controller.*.*(..))")
39 public void logAfter(JoinPoint joinPoint) throws Exception{
40 logger.info(getInformation(joinPoint)+"---- end");
41 }
42
43 /**
44 * 生成描述信息
45 * @param joinPoint
46 * @return
47 * @throws Exception
48 */
49 private String getInformation(JoinPoint joinPoint) throws Exception{
50 // 获取类名
51 String targetName = joinPoint.getTarget().getClass().getName();
52 // 获取方法名
53 String methodName = joinPoint.getSignature().getName();
54 // 当前时间
55 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
56 return sdf.format(new Date())+"----:"+targetName+"."+methodName;
57 }
58
59 }
四、还有几个文件
- UserMapper.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="UserMapper">
4
5 <select id="findUserList" resultType="User">
6 SELECT ID, NAME, AGE, GENDER, PHONE, ADDRESS FROM USER
7 </select>
8
9 </mapper>
- View Code
- user.sql
1 /*
2 SQLyog Ultimate v12.09 (64 bit)
3 MySQL - 5.7.17-log : Database - company
4 *********************************************************************
5 */
6
7
8 /*!40101 SET NAMES utf8 */;
9
10 /*!40101 SET SQL_MODE=''*/;
11
12 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
13 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
14 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
15 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
16 CREATE DATABASE /*!32312 IF NOT EXISTS*/`company` /*!40100 DEFAULT CHARACTER SET utf8 */;
17
18 USE `company`;
19
20 /*Table structure for table `user` */
21
22 DROP TABLE IF EXISTS `user`;
23
24 CREATE TABLE `user` (
25 `id` varchar(20) NOT NULL COMMENT '员工编号',
26 `password` varchar(50) DEFAULT NULL COMMENT '员工密码',
27 `name` varchar(20) DEFAULT NULL COMMENT '员工姓名',
28 `age` int(2) DEFAULT NULL COMMENT '员工年龄',
29 `gender` char(2) DEFAULT NULL COMMENT '员工性别',
30 `phone` decimal(11,0) DEFAULT NULL COMMENT '员工电话',
31 `address` varchar(200) DEFAULT NULL COMMENT '员工住址',
32 PRIMARY KEY (`id`)
33 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
34
35 /*Data for the table `user` */
36
37 LOCK TABLES `user` WRITE;
38
39 insert into `user`(`id`,`password`,`name`,`age`,`gender`,`phone`,`address`) values ('021ef','13465','test3',22,'男','18311546235','北京天桥'),('4845a','123465','test1',NULL,'男','15236987421','北京天桥'),('a73bf','123456','test2',NULL,'女','15896477432','北京天桥'),('P00001','123456','小二',19,'女','15811234884','北京天桥'),('P00002','123456','小三',20,'女','18823854512','北京天桥'),('P00003','123456','小四',21,'男','15862154512','北京天桥'),('P00004','123456','小五',22,'男','15895456412','北京天桥'),('P00005','123456','小六',18,'女','18856412345','北京天桥'),('P00006','123456','小七',19,'女','18456125451','北京天桥'),('P00007','123456','小八',20,'男','13694564564','北京天桥'),('P00008','123456','小九',21,'女','18736542541','北京天桥'),('V00001','123456','小一',18,'男','18811471169','北京天桥'),('V152171','123456','小十',22,'女','15832456368','北京天桥');
40
41 UNLOCK TABLES;
42
43 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
44 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
45 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
46 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
- View Code