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 }
  • 运行结果

下面贴完整代码

一、大概项目目录结构

 

二、各种配置文件

  1. 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
  1. View Code
  1. 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 ########################################################################
  1. View Code
  1. 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>
  1. View Code
  1. 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>
  1. View Code
  1. 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>
  1. 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>
  1. View Code
  1. 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>
  1. View Code
  1. 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>
  1. View Code

三、各种Java代码

  1. 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 }
  1. View Code
  1. 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 }
  1. View Code
  1. 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 }
  1. View Code
  1. 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 }
  1. View Code
  1. 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 }
  1. View Code
  1. 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 }

四、还有几个文件

  1. 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>
  1. View Code
  1. 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 */;
  1. View Code