一、spring管理复杂对象
简单对象 :可以通过new构造方法的形式 创建的对象。
spring工厂管理简单对象的底层: 反射+构造方法
复杂对象 :没有构造方法 或 不能通过new创建的对象, 如 接口、抽象类。
Connection con = DriverManager.getConnection(url,name,pwd);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder ();
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory f = builder.build(reader);
1.写代码
告诉spring工厂,创建复杂对象的方式 (代码)。
必须实现 FactoryBean<复杂对象的类型>
2.配置FactoryBean类
3.使用
二、spring整合mybatis
1.准备工作
spirng的jar mybatis的jar db-driver的jar log4j.jar mybatis-spring.jar(整合jar)
增加以下依赖的jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.整合分析
3.整合DAO层
引入连接池的依赖jar包
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.19</version>
</dependency>
4.整合业务层
业务层必须要控制事务
三、spring中的事务属性
1. 隔离性 isolation
2.传播性 propagation
3.只读性 read-only
默认值为:false 代表可读写
在开发中,查询方法 设置为true,则只能进行读操作,可以提高性能(oralce不支持)。
4.异常相关
roolback-for: 指定事务可以回滚的 异常类型。默认只有RuntimeException才能自动回滚。
no-roolback-for: 指定事务不自动回滚 的异常类型。
5.超时性 timeout
指定事务的超时时间。默认值-1,代表 永不超时。
其值为整数,单位秒。
6.开发中事务的通用配置【重点】
<tx:method name="query*" propagation="SUPPORTS" read-only="true"></tx:method>
<tx:method name="*"/>
query* 代表所有以query开头的方法。
* 代表所有方法,如果 在query*后进行配置,则代表 除query*以外的其它所有方法。