SpringAOP日志记录一下,代码就贴完整代码,一劳永逸。
SpringAOP面向切面编程,拦截指定代码,对该代码进行增强。
SpringAOP实现日志很简单
- 第一种方式配置XML文件
- 在Spring的XML文件中配置拦截
- 定义增强代码就OK了
- 运行结果
- 在Spring的XML文件中配置拦截
- 第二种方式注解
- 配置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 }
-
- 运行结果
-
- 配置Spring.xml文件
下面贴完整代码
一、大概项目目录结构
二、各种配置文件
- 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
-
- 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 ########################################################################
-
- 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>
-
- 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>
-
- 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>
-
- 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>
-
- 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>
-
三、各种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 }
-
- 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 }
-
- 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 }
-
- 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 }
-
- 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 }
-
- 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>
-
- 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 */;
-