1.配置自动扫描的包
<context:component-scan base-package="包名"></context:component-scan>
2.利用外部文件
<context:property-placeholder location="classpath:properties文件名"/>
3.配置jdbc
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
</bean>
4.jdbctemplate
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
5.事务管理两种方式 ,一种利用@ 注解方式,一种是xml文件方式
5.1基于注解方式实现
<!--
1. 配置事务管理器
2. 配置支持基于直接的事务配置
3. 在事务方法方法上, 添加 @Transactional 注解
-->
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置启用基于直接的事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/
5.2基于xml配置文件实现
<bean id="bookShopDao"
class="com.atguigu.spring.tx.xml.BookShopDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<bean id="bookShopService"
class="com.atguigu.spring.tx.xml.BookShopServiceImpl">
<property name="bookShopDao" ref="bookShopDao"></property>
</bean>
<bean id="cashier"
class="com.atguigu.spring.tx.xml.CashierImpl">
<property name="bookShopService" ref="bookShopService"></property>
</bean>
<!-- 1.配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 2.配置事务属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 还可以配置事务的其他属性. -->
<tx:method name="purchase" propagation="REQUIRES_NEW" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<!-- 3.配置事务切点表达式. 并把事务的切点表达式和事务的属性关联起来. -->
<aop:config>
<!-- 3.1 声明事务的切点表达式. 即事务作用在哪些类的哪些方法上. -->
<aop:pointcut expression="execution(* com.atguigu.spring.tx.xml.service.*.*(..))"
id="txPointcut"/>
<!-- 3.2 把事务的属性和事务的切点表达式关联起来 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
6.注解
@Repository、@Service 和 @Controller
三个分别是 持久化层,逻辑层,控制层
7.aop也有两种配置形式,注解的好处就是代码少,配置方便,xml配置的优势是不污染代码
8.今天碰见了两个异常,一个是NoBean异常,开始没找到,后来发现是应该用dao接口,而不是实现类,但这不是解决问题的途径,还有一个是ConversionNotSupportExcept异常 ,这个还不明白是什么意思
9.Caused by: java.lang.IllegalStateException: Cannot convert value of type 就是上面那个异常 ,我解决了, 错误的原因在于,变量名是重复了,然后改了个变量名就好了‘
private BookShopDao bsd;
<bean id="bsd" class="com.atguigu.spring.testtx1.BookShopDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<bean id="bookShopService" class="com.atguigu.spring.testtx1.BookShopServiceImpl">
<property name="bsd" ref="bsd"></property>
</bean>
错误的原因就在于这里,改成bsd,立马运行,记住,变量名不可一样