SSM学习记录(二)——简单AOP实现

9 篇文章 0 订阅
8 篇文章 0 订阅

2018.5.2

仅为个人理解 不足之处欢迎指正~


本文仅将一个简单的辅助业务——登陆注册时打印系统时间 加入SSM框架项目中

SSM框架项目目前仅包含登陆注册功能的实现,在请参考之前的 SSM学习记录(一)及SpringMVC学习记录(四)

本文所涉及知识点大多在 Spring学习记录(五)——初步体验AOP中解释

故本文仅涉及整合操作,关于AOP的思想与基础操作请参考链接中的文章


第一步:添加所用到的包

对AOP的支持需要用到以下包:


本项目使用Maven搭建,故更新完成后的pom.xml为:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tzy</groupId>
  <artifactId>MVCDemo2</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>MVCDemo1 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
      <spring.version>4.3.0.RELEASE</spring.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>5.1.34</version>
    </dependency>
	<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
	</dependency>
    <dependency>
    	<groupId>org.mybatis</groupId>
    	<artifactId>mybatis</artifactId>
    	<version>3.4.5</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-jdbc</artifactId>
    	<version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>aopalliance</groupId>
    	<artifactId>aopalliance</artifactId>
    	<version>1.0</version>
    </dependency>
    <dependency>
    	<groupId>org.aspectj</groupId>
    	<artifactId>aspectjweaver</artifactId>
    	<version>1.6.2</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-aop</artifactId>
    	<version>4.3.2.RELEASE</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
    <finalName>TestMaven2</finalName>
  </build>
</project>

该项目至今为之已经添加的包有:



第二步:为辅助业务编写实现类

本文的辅助业务为打印系统时间

在根目录下新建aspect层并添加Timeprint.java

package aspect;

public class Timeprint   
{  
    public void printTime()  
    {  
        System.out.println("当前时间为:"+System.currentTimeMillis());  
    }  
}  

第三步:修改Spring配置文件SpringConfig.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context" 
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/tool"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context.xsd 
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx.xsd 
       http://www.springframework.org/schema/tool 
       http://www.springframework.org/schema/tool/spring-tool.xsd">
    <!--配置数据源-->
    <bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mvcdemo2?useUnicode=true&characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <!--配置sessionFactory-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="jdbcDataSource" />
        <property name="mapperLocations">
            <array>
                <value>classpath:Dao/**/*.xml</value>
            </array>
        </property>
        <property name="typeAliasesPackage" value="com.isea533.mybatis.model"/>
        <!-- MybatisSpringPageInterceptor分页拦截器 -->
        <!--<property name="plugins">-->
            <!--<bean class="com.wlxk.Util.MybatisSpringPageInterceptor"/>-->
        <!--</property>-->
    </bean>
    <!--配置dao 自动扫描带有@MapperScan注解的-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="dao"/>
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
    </bean>
    
    <bean id="Timeprint" class="aspect.Timeprint">
   </bean>
   
   <aop:config>
   		<aop:aspect id="time1" ref="Timeprint">
   				<aop:pointcut id="test1" 
   				expression="execution(* service.UserService.*(..))"/>
   				<aop:before method="printTime" pointcut-ref="test1"/>
   				<aop:after method="printTime" pointcut-ref="test1"/>
   		</aop:aspect>
   </aop:config>
    <!--全局异常处理-->

    <!--service 注解扫描-->
    <context:component-scan base-package="service"/>
</beans>


本次修改的地方有:

1.在声明中加入了


2中加入了:


3.装配了切面类:



4.AOP配置:



测试结果:

登录前后均打印系统时间:


注册前后均打印系统时间:




总结:

本文尝试添加了一个最简单的辅助功能,主要目的在于做将AOP整合入SSM框架的尝试

之后的项目会在此基础上加入复杂而实用的辅助功能如事务管理


谢谢~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值