AOP的记录

SSM配置面向切面编程

由于忘记了Aop怎么配,回忆起来之后决定记录在博客里方便以后自己回忆。

 <!-- {1} 加载属性文件 -->    
       <context:property-placeholder
       		location="classpath:jdbc.properties" />
 <!-- {2} 配置基础数据源
			b1.setDriverClassName(驱动名称);
			b1.setUrl(url);
			b1.setUsername(username)
			b1.setPassword(password);
        -->
       <bean id="BasicDataSource" 
			class="org.apache.commons.dbcp.BasicDataSource" >
			<property name="driverClassName" value="com.mysql.jdbc.Driver" />
			<property name="url" value="${jdbc.url}" />
			<property name="username" value="root" />
			<property name="password" value="root" />
       </bean>
``

```java
<!-- {3} 包扫描    -->
       <context:component-scan 
       		base-package="com.springmvc.dao" />
       <context:component-scan 
       		base-package="com.springmvc.service" />
	   <context:component-scan base-package="com.springmvc.aop"></context:component-scan>
<!-- {4} 会话工厂
        SqlSessionFactoryBean b1;
		org.mybatis.spring.SqlSessionFactoryBean
			{ps} 设置 mybatis 主配置文件的位置
			b1.setConfigLocation( 主配置文件的位置 );
			b1.setDataSource( 引用数据源的 BeanID );
         -->
		<bean id="sqlSessionFactoryBean"
			class="org.mybatis.spring.SqlSessionFactoryBean" >
        	<property name="ConfigLocation" 
        		value="classpath:mybatis.cfg.xml" />
        	<property name="DataSource" 
        		ref="BasicDataSource" />
		</bean>
 <!-- {5} Mapper 扫描器
       		       映射器扫描器配置器: MapperScannerConfigurer
			org.mybatis.spring.mapper.MapperScannerConfigurer
			m1.setBasePackage(basePackage);
			m1.setSqlSessionFactoryBeanName(sqlSessionFactoryName);
       -->
		<bean id="MapperScannerConfigurer"
       		class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
       		<property name="BasePackage" 
       			value="com.springmvc.dao" />
       		<property name="SqlSessionFactoryBeanName" 
       			value="sqlSessionFactoryBean" />
		</bean>
 <!-- {6} 事务管理器
       		配置一个数据源事务管理器
       		DataSourceTransactionManager
       		设置一个数据源。。。
       		org.springframework.jdbc.datasource.DataSourceTransactionManager
			DataSourceTransactionManager m1;
			m1.setDataSource( 数据源  );
        -->
       	<bean id="txManager"
       		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
			<property name="DataSource" ref="BasicDataSource" />       	
       	</bean>
<!-- {7} 事务增强
       		[a] 设置它的 ID
       		[b] 引用事务管理器
       		[c] 设置事务的属性, 传播行为。
           -->
       <tx:advice id="txAdvice" 
       		transaction-manager="txManager">
       		<!-- 
       			[c] 设置事务的属性, 传播行为。
       			        织入到哪些方法上: del打头, update打头, ..
       		 -->
       		<tx:attributes>
       			<tx:method name="del*" propagation="REQUIRED"/>
       			<tx:method name="update*" propagation="REQUIRED"/>
       			<tx:method name="add*" propagation="REQUIRED"/>
       		</tx:attributes>
       </tx:advice>
 <!-- {9} AOP 设置
       		<aop:advisor 
       			id="txAdvisor"
       			advice-ref="引用增强"
       			pointcut-ref="引用切点" />
        	-->
	<bean id="myadvice" class="com.springmvc.aop.MyAspect" />
	<aop:config>
		<aop:pointcut
				id="txPointCut"
				expression="execution(* com.springmvc.service.*.*(..))" />
		<aop:advisor
				id="txAdvisor"
				advice-ref="txAdvice"
				pointcut-ref="txPointCut" />
		<aop:aspect id="myaspect" ref="myadvice">
			<aop:before method="mybefore" pointcut-ref="txPointCut"/>
			<aop:after method="myafter" pointcut-ref="txPointCut"/>
		</aop:aspect>
	</aop:config>

<aop:aspect id=“myaspect” ref=“myadvice”>
<aop:before method=“mybefore” pointcut-ref="txPointCut"/>
<aop:after method=“myafter” pointcut-ref="txPointCut"/>
</aop:aspect>

ref代表要引用的切面类(内部放置了前置通知,后置通知等等)
before标签代表这个方法是前置方法,method=“方法名”
after标签同样,除此之外还有
<aop:after-returning method=""/>
<aop:after-throwing method=""/>
<aop:around method=""/>
等等,用法接近。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值