• Spring总结--> 第二结 SpringAOP日志


    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.  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
    2. log4j.properties
      1.  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
    3. applicationContext-DataSource.xml
      1.  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
    4. applicationContext-Main.xml
      1.  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
    5. applicationContext-MVC.xml
      1.  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>
    6. mybatis-config.xml
      1. 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
    7. web.xml
      1.  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
    8. pom.xml
      1.   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代码

    1. UserController.java
      1.  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
    2. IUserService.java
      1.  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
    3. UserServiceImpl.java
      1.  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
    4. UserDao.java
      1.  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
    5. User.java
      1.  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
    6. LoggerAspect
      1.  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 }
    7. AnnotationLoggerAspect
      1.  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. 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
    2. user.sql
      1.  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

     

  • 相关阅读:
    联赛练习:好数
    CF703D Mishka and Interesting sum
    POJ2689 Prime Distance
    联赛练习:draw
    题解:luogu P2634 [国家集训队]聪聪可可
    题解:luoguP3806 【模板】点分治1(在线处理询问做法)
    题解:luogu P1073 最优贸易
    题解报告——聪聪与可可
    题解报告——森林
    题解报告——星际战争
  • 原文地址:https://www.cnblogs.com/duniang/p/9078652.html
Copyright © 2020-2023  润新知