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=""/>
等等,用法接近。