一,场景:编写一个用户管理的服务层,包括增加用户、删除用户和查询用户等等,而且用户信息以关系型数据库形式存储。
分析:
这是一个典型的应用服务,涉及到业务层(Business Objects Layer)、数据库访问层(DB Access)和存储层(EIS)。
采用典型的架构:BO+DAO
DAO采用Spring提供的JdbcTemplate来进行封装。
二,具体实现
1)用户类User
public class User{
private String username;
private String email;
private Date birthday;
public User(){}
…
相应的setter/getter方法。
}
这是一个简单的bean类,记录用户的信息。
2)数据库访问类:UserDao
public interface UserDao {
public void save(User user);
public void remove(String username);
public User searchByName(String username);
}
这是数据库访问的接口类,定义了对用户的数据库操作,其实现类是UserDaoJdbc
UserDaoJdbc类
public class UserDaoJdbc extends JdbcDaoSupport implements UserDao {
public UserDaoJdbc() {
super();
}
public void save(User user) {
getJdbcTemplate().update(
"insert into SAMPLE_USER values (?,?,?)",
new Object[] { user.getUsername(), user.getEmail(),
user.getBirthday() });
}
...
}
3)业务类UserManageService
public interface UserManageService {
public void saveUser(User user);
public void removeUser(String username);
public User getUserByName(String username);
}
这是用户的业务类接口,定义了和用户相关的一些业务操作,其实现类UserManageServiceImpl
实现类UserManageServiceImpl
public class UserManageServiceImpl implements UserManageService {
private UserDao udao;
public UserManageServiceImpl() {
super();
}
public void saveUser(User user) {
udao.save(user);
}
public UserDao getUdao() {
return udao;
}
public void setUdao(UserDao udao) {
this.udao = udao;
}
}
4)Spring bean描述文件配置
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@172.16.4.219:1521:orcl</value>
</property>
<property name="username">
<value>zhangbo</value>
</property>
<property name="password">
<value>password</value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="userdao" class="sample.spring.dao.UserDaoJdbc">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="userManageService" class="sample.spring.service.UserManageServiceImpl">
<property name="udao">
<ref bean="userdao"/>
</property>
</bean>
</beans>
5)数据中存储用户的表SAMPLE_USER
username varchar2(30) not null,
email varchar2(50) not null,
birthday date
6)通过单元测试来验证UserManageService中的操作:
public class UserManageServiceTest extends TestCase {
private UserManageService service;
private static Log logger = LogFactory.getLog(UserManageServiceTest.class);
protected void setUp() throws Exception {
super.setUp();
service = (UserManageService) SpringContextUtil
.getBean("userManageService");
}
public void testSaveAndSearchAndRemoveUser() throws Exception {
User user = new User();
user.setUsername("zhangsan");
user.setEmail("zhangsan@test.com");
user.setBirthday(new Date());
service.saveUser(user);
logger.debug("存入一个新用户:" + user);
User userFromDb = service.getUserByName("zhangsan");
assertNotNull(userFromDb);
assertEquals(userFromDb.getEmail(), "zhangsan@test.com");
logger.debug("从数据库中查到用户:" + userFromDb);
service.removeUser("zhangsan");
logger.debug("从数据库删除用户:" + userFromDb);
}
protected void tearDown() throws Exception {
super.tearDown();
}
}
分享到:
相关推荐
《Spring框架模拟器详解——构建你的知识大厦》 在IT领域,Spring框架是Java开发中的一个基石,尤其在企业级应用开发中...每个步骤都包含了从简单到复杂的递进,确保你在实践中不断巩固和提升Spring框架的运用能力。
本教程聚焦于Spring Boot 2.4版本,针对初学者提供一个完整的RESTful CRUD(创建、读取、更新、删除)操作实例,结合尚硅谷B站教程进行讲解。对于已经熟悉Spring Boot 1.5的老手来说,这个教程可能会揭示2.4版本的...
《深入剖析Spring Framework 3.2.x:Eclipse开发环境搭建与源码探索...同时,源码分析也是提升编程能力的一个重要途径,通过对Spring源码的学习,你可以了解到优秀软件设计的实践,为自己的项目提供更多的灵感和指导。
Spring框架则是一个广泛使用的Java企业级应用开发框架,涵盖了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等多个领域。将Spring与Shiro结合,可以充分利用两者的优点,为应用程序提供全面的安全性支持...
Spring Boot 是一个由 Pivotal 团队提供的全新框架,其设计目标是为了简化 Spring 应用的初始搭建以及开发过程。Spring Boot 基于 Spring 4.0 设计,旨在简化 Spring 应用的初始搭建以及开发过程。它通过提供默认...
Spring是一个广泛使用的Java开发框架,而Spring Android是Spring为Android平台提供的扩展库,它允许开发者利用Spring框架的功能来构建Android应用。"spring auth"指的是Spring Security,它是Spring生态中的安全组件...
这个"三大框架--Spring详解"资料很可能是包括了Spring框架的各个方面,从基础概念到高级特性的详细讲解,适合初学者和有经验的开发者进行深入学习。通过阅读和实践其中的内容,你将能够熟练掌握Spring框架,并在实际...
总之,《Spring框架开发参考中文手册》是Spring初学者和进阶者的宝贵资源,它全面讲解了Spring的各个方面,有助于提升开发者在Spring框架下的开发能力。通过阅读和实践,开发者能够更好地掌握Spring,并利用其强大...
Spring Security 是一个功能强大且可高度定制的身份验证和访问控制框架,它主要用于为Java应用程序提供安全特性。 - **历史背景** 自2004年以来,Spring Security一直在开发中,已经经历了多个版本的更新和改进...
1. **创建简单Web应用**:使用Spring MVC构建一个简单的CRUD应用,实践MVC设计模式。 2. **事务管理**:利用Spring的声明式事务管理,处理多表操作时的事务一致性问题。 3. **AOP实践**:编写切面来实现日志记录或...
这个压缩包包含了10个步骤的代码,每一步都对应着Spring框架的核心功能实现,对于想要深入理解Spring框架源码的人来说,这是一个宝贵的实践教程。 首先,我们从"tiny-spring-step-1-container-register-and-get.zip...
而MyBatis作为一个轻量级的持久层框架,以其简单易用、高效灵活的特点深受开发者喜爱。两者的结合,能够为开发者提供强大的数据访问能力,使得业务逻辑的编写更加简洁。本文将详细讲解Spring与MyBatis的整合过程,并...
- **最佳实践和示例**:提供了一系列的实际应用场景和最佳实践,帮助开发者更好地应用Spring框架。 通过阅读《Spring2.5-中文参考手册》,开发者不仅可以学习到Spring的基础知识,还能了解到各种实战技巧和解决常见...
- **@Mapper注解**:标记在Mapper接口上,表明这是一个MyBatis的Mapper。 - **@Select、@Insert、@Update、@Delete**:分别用于标注SQL查询、插入、更新和删除操作。 4. **MyBatis-Spring自动配置** Spring Boot...
2. **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,通过DI,对象之间的依赖关系由框架管理,使得代码更加松耦合。 3. **面向切面编程(Aspect-Oriented Programming,AOP)**:Spring AOP提供了...
《Spring in Action》是一本深度探讨Spring框架的权威指南,主要针对Java开发人员。Spring框架是企业级Java应用开发的核心工具,它简化了应用程序的构建,提供了强大的依赖注入、AOP(面向切面编程)、MVC(模型-...
Spring框架提供了丰富的异常处理机制,Elasticsearch的错误通常可以通过捕获`ElasticsearchException`来处理。同时,使用合适的日志框架如Logback或Log4j可以帮助我们跟踪和调试应用程序的行为。 10. **实战演练**...
- **Spring CLI示例快速入门**:通过一个简单的示例演示了Spring Boot CLI的基本用法。 - **从Spring Boot早期版本升级** - 为已经使用过早期版本Spring Boot的用户提供升级指南。 - **开发你的第一个Spring ...
1. **Spring框架概述**:Spring是一个开源的应用框架,它的核心设计目标是简化Java企业级应用的开发。通过依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP),Spring可以...