spring核心配置文件 applicationContext.xml
注解开发 组件扫描 除了 mvc的controller(web)以外 service 和 mapper都要
<!--组件扫描 扫描service和mapper--> <context:component-scan base-package="com.jia"> <!--排除controller的扫描--> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter> </context:component-scan>
Spring整合mybatis 需要添加的配置
第一mapper对象可以用依赖注入直接注入到service层的成员变量mapper上,那么就要让spring拥有创建mapper对象权 想要创建mapper又需要sqlsession工厂和sqlsession
<!--1加载propeties文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!-- 1配置Druid连接池数据源 Druiddatasource -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
第二 事务的控制权也可以交给spring 释放sqlsession.close() 和 提交事务commit
<!--2声明式 事务控制 spring有两种 一种是xml 一种是注解 aop 动态代理--> <!--2数据源事务管理器 这里是jdbc/mybatis的事务管理器的实现类 无参构建的bean 需要set方法传参 参数是一 数据源对象--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> /* <tx:attrivutes>设置事务的属性 <tx:method>这里的*是指定的是需要 被增强的方法 也就是切点(Pointcut)范围为 任意切点 事务属性还有很多隔离级别 事务传播行为 超出时间 是否只读(这个可以在只查询的时候用)这几个都有默认值 不设置自动使用默认值 */ <!--2配置事务的增强/通知(Advice) --> <tx:advice id="txAdvice"> <tx:attributes> <tx:method name="*"/> </tx:attributes> </tx:advice> /* <aop:advisor 配置切面(目标对象target+增强advice) 属性值 advice-ref 指定 通知bean对象 pointcut 指定切点(被增强的方法) 需要用切点表达式 execution([修饰符]*任意返回值 全限定包名.*只是此包下任意类并不包括此包下的子包的类.*任意方法(..任意个数任意参数)) public修饰符可省略 */ <!--2配置事务的aop 织入(切点被增强的过程)--> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.itheima.service.impl.*.*(..))"></aop:advisor> </aop:config>