在service层注入dao层,1、含有dao层的成员变量,以及set方法;2、在配置文件中注入
public class MyAccountServiceImpl implements AccountService {
/**
* 注入转账的dao
*/
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
<!--配置业务层的类-->
<bean id="service" class="com.ytcool.service.MyAccountServiceImpl">
<property name="accountDao" ref="accountDao"/>
</bean>
1
转账测试类
完成Service实现类
service注入dao
Dao实现类
2、通过查看JdbcDaoSupport的文档,得知可以直接通过配置属性的的方式来注入连接池,它就可以帮我们创建Jdbc模板
1、让DAO实现类继承JdbcDaoSupport类
spring配置
AccountDao
AccountService
Spring事务管理
Spring 支持的两种方式事务管理
log4文件:https://www.imooc.com/qadetail/303285
java.lang.IllegalStateException: Failed to load ApplicationContext解决方法:https://www.imooc.com/qadetail/189429
Spring事务管理的两种方式
1、编程式的事务管理:手动在程序中编写代码实现事务管理,实际应用中很少使用,通过TransactionTemplate管理事务。
2、声明式的事务管理:使用XML配置实现事务管理,推荐使用(代码侵入性最小),Spring的声明式事务管理是通过AOP实现的(没有代码之前开启事务,代码完成后提交事务)。
搭建事务管理环境(转账环境)
【a】创建表及插入记录
【b】创建项目并引入jar包
【c】引入log4j.properties、applicationContext.xml、jdbc.properties配置文件。
【e】创建包结构,编写Dao及Service
【f】spring配置文件编写
事务管理的两种方式
事务传播行为
Spring事务管理的两种方式
【1】编程式的事务管理:手动在程序中编写代码实现事务管理,实际应用中很少使用,通过TransactionTemplate管理事务。
【2】声明式的事务管理:使用XML配置实现事务管理,推荐使用(代码侵入性最小),Spring的声明式事务管理是通过AOP实现的(没有代码之前开启事务,代码完成后提交事务)。
搭建事务管理环境(模拟转账环境)
【a】创建表及插入记录
【b】创建项目并引入jar包
【c】引入log4j.properties、applicationContext.xml、jdbc.properties配置文件。
【e】创建包结构,编写Dao及Service
【f】spring配置文件编写
【g】Dao中获取JDBC模板
首先Dao实现类需要继承JdbcDaoSupport类,该类中就会注入JDBC模板,该类中定义了JDBC模板,并提供set方法只要Dao中注入模板就可以
。也可以通过注入连接池获取JDBC模板。
【h】Dao方法具体编写
【i】Service中注入Dao,并调用Dao中的方法
【k】测试:由于Junit4和spring整合的包已经引入,所以通过注解@ContextConfiguration注解加载配置文件,这里使用注解@Resource(name="")方式注入AccountService。
转账案例的DAO层的实现类 方法实现
在dao里注入连接池会自动创建jdbcTemplate
或者 class AccountDaoImpl extends JdbcDaoSupport
配置文件
配置连接池、配置业务层类、配置DAO的类
spring applicationContext.xml配置文件
引入外部的属性文件
<context:property-placeholder location="classpath:jdbc.properties"/>
配置c3p0连接池
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="xx" value=${xx}"/>
</bean>
spring开发基本用到的6个jar包
Spring事务管理的两种方式
spring开发基础包
spring支持的两种事务管理方式
如果没有进行事务管理的时候, 程序出现异常会使得转账金额不匹配. 可能会发生已转出, 但是未转入的情况.
通过spring aop 方式进行申明式事务管理.
Spring事务管理的两种方式
由于编程式的事务管理在实际应用中很少使用,所以这种方式进行一个简单的了解就可以了。
着重看第二种方式就可以了