首页 > Python基础教程 >
-
java教程之Spring (2)框架(3)
}
@Test
public void testList() {
List<User> users = service.list();
System.out.println(users);
}
}
ApplicationContext.xml配置
<!-- 引入 db.properties配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置Druid连接池 : DataSource 数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
destroy-method="close"
>
<!-- setter方法注入属性值 -->
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 最大连接数 -->
<property name="maxActive" value="${jdbc.maxActive}"/>
</bean>
<!-- 配置DAO层 -->
<bean id="userDao" class="cn.zj.spring.dao.impl.UserDaoImpl2">
<!-- setter方法注入数据源:连接池 -->
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 配置Service层 -->
<bean id="userSercice" class="cn.zj.spring.service.impl.UserServiceImpl">
<!-- 注入dao -->
<property name="dao" ref="userDao"/>
</bean>
6.2. 快速生成一个类有多个测试方法的单元测试类
|
|
|
6.2.1. JDBCTemplate模板类
Spring为各大框架提供对应的模板类可以直接操作数据库
如果使用JDBC就使用JDBCTemplate类(将数据库的基本操作方法已经封装好了,直接调用即可)
|
导入相关jar包 mysql-connector-java-5.x.jar:MySQL驱动包 spring-jdbc-5.0.5.RELEASE.jar:支持JDBC spring-tx-5.0.5.RELEASE.jar: 支持事务 druid1.9.jar 连接池 |
DAO层代码 |
// 引入JDBCTemplate 模板类 private JdbcTemplate jdbcTemplate;
//使用setter方式注入数据源即可 public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); }
@Override public void save(User user) { this.jdbcTemplate.update("insert into t_user (name,email) values (?,?)", user.getName(),user.getEmail()); }
@Override public void delete(Integer id) { this.jdbcTemplate.update("delete from t_user where id = ?",id);
}
@Override public void update(User user) { this.jdbcTemplate.update("update t_user set name = ?,email = ? where id = ?", user.getName(),user.getEmail(),user.getId()); }
@Override public User findById(Integer id) { String sql = "select * from t_user where id = ?"; User user = this.jdbcTemplate.queryForObject(sql,new Object[] {id}, new RowMapper<User>() { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); user.setId(id); return user; } }); return user; }
@Override public List<User> list() { String sql = "select * from t_user";
List<User> users = this.jdbcTemplate.query(sql,new RowMapper<User>(){ @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); user.setId(rs.getInt("id")); return user; } });
return users; }
|
6.2.2. DAOSupport
问题: 每个DAO层的实现类都写上述同样的代码,100个DAO写100次,代码重复99次
Spring考虑到这点:专门为各种持久化操作抽取了 Support父类,开发者自己的到只需要继承对应的Support类即可
public class UserDaoImpl implements UserDao { // 引入JDBCTemplate 模板类 private JdbcTemplate jdbcTemplate;
//使用setter方式注入数据源即可 public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } } |
|
JdbcDaoSupport类的结构 public abstract class JdbcDaoSupport extends DaoSupport {
@Nullable private JdbcTemplate jdbcTemplate;
/** * Set the JDBC DataSource to be used by this DAO. */ public final void setDataSource(DataSource dataSource) { if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) { this.jdbcTemplate = createJdbcTemplate(dataSource); initTemplateConfig(); } } @Nullable public final JdbcTemplate getJdbcTemplate() { return this.jdbcTemplate; } } |
让自己的类继承自JdbcDaoSupport类就解决上上述代码重复问题 |
public class UserDaoImpl2 extends JdbcDaoSupport implements UserDao {} |
7. 小结
Spring的IOC和DI 的配置 可以使用XML配置,也可以注解配置
今日内容
注解配置
- 注解配置IOC (控制反正,将对象的创建权交给Spring)-重点
(1) @Component 通用IOC 组件,试用任意Spring对象管理
(2) @Controller 主要在表现层使用
(3) @Service 业务层使用
(4) @Repository DAO层使用
(5) 必须在xml中配置包扫描的位置
(6) <context:component-scan base-package=”cn.zj.spring”>
- 注解配置ID (依赖注入)注入对象的属性(值,集合,引用)-重点
(1) @Autowired + @Qualifier Spring 框架提供
(2) @Resource JavaEE 官方的规范
- Spring纯注解配置-重点
(1) 纯注解配置替代xml配置,但是所有配置依然存在,只是配置方式变换成在类上面贴注解的形式(未来的趋势)--SpringBoot(纯注解)
- Spring测试-(理解)
(1) 为了更方便的开发Spring程序
- SpringJDBC-(理解)
(1) 优点 :主要能够让Spring自动控制事务
(2) JdbcTemplate 模板类 进行数据表的增删改查
(3) JdbcDaoSupport
① 优点: 将jdbcTemplate模板类的创建进行封装
② 缺点:只能在xml配置对应DAO类