Spring框架讲解-一个简单的实践

一,场景:编写一个用户管理的服务层,包括增加用户、删除用户和查询用户等等,而且用户信息以关系型数据库形式存储。
分析:
这是一个典型的应用服务,涉及到业务层(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();
    }
}

时间: 2024-10-30 21:49:52

Spring框架讲解-一个简单的实践的相关文章

源码-用javaSSH框架做一个简单的登录功能

问题描述 用javaSSH框架做一个简单的登录功能 用SSH框架做一个简单的登录功能,登录成功则跳转到一个页面,登录失败则跳转到一个失败页面,MySQL数据库.求大神指点,最好能提供源码 解决方案 Spring 3.x 企业应用开发实战的第一个例子就符合你的要求了.Mysql+srping3 解决方案二: 告诉我你的扣扣邮箱,我发你邮箱 解决方案三: 主要还是在struts2 里面,处理业务逻辑,再跳转到指定页面,关键在struts,xml配置文件里面

使用Spring来创建一个简单的工作流引擎_Java编程

文章来源:matrix 作者:Steve Dodge 摘要 spring是支持控制反转编程机制的一个相对新的框架.本文把spring作为简单工作流引擎,将它用在了更加通用的地方.在对工作流简单介绍之后,将要介绍在基本工作流场景中基于Spring的工作流API的使用. 许多J2EE应用程序要求在一个和主机分离的上下文中执行处理过程.在许多情况下,这些后台的进程执行多个任务,一些任务依赖于以前任务的状态.由于这些处理任务之间存在相互依赖的关系,使用一套基于过程的方法调用常常不能满足要求.开发人员能够

安卓开发-java中的spring框架是一个怎么样的框架,

问题描述 java中的spring框架是一个怎么样的框架, java中的spring框架是一个怎么样的框架, 在android开发当中有没有应用到呢 解决方案 spring最初是一个IoC框架,主要的作用是实现组件的管理.有时候我们希望程序中一些代码可以标准化并且被替换,比如一个管理系统底层可以使用SQL Server,也可以使用MySQL,那么我们编写两个符合接口的组件,Spring的作用是通过配置文件把需要的组件装配起来,比如得到一套支持mssql的系统,一套支持mysql的系统. 而主程序

spring mvc-初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助

问题描述 初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助 项目用ecliper ee开发,jdk1.7+mysql+tomcat环境.初学spring,想做一个简单的页面登入验证功能,报404错误,用了spring mvc,在Controller类里打了断点发现程序根本没有执行Controller类,检查了n遍配置文件感觉都是对的.这个bug已经困扰我一天多了,跪求帮助!! 页面错误信息 项目目录结构 web.xml 配置 applicationContex

使用Python的Twisted框架实现一个简单的服务器_python

预览  twisted是一个被设计的非常灵活框架以至于能够让你写出非常强大的服务器.这种灵活的代价是需要好通过好几个层次来实现你的服务器, 本文档描述的是Protocol层,你将在这个层次中执行协议的分析和处理,如果你正在执行一个应用程序,那么你应该在读过top level的为twisted写插件一节中的怎样开始写twisted应用程序之后阅读本章.这个文档只是和TCP,SSL和Unix套接字服务器有关,同时也将有另一份文档专门讲解UDP.   你的协议处理类通常是twisted.interne

用JSF+Spring+IBatis搭建一个简单框架

web.xml:关键是插入Spring的监听 <listener> <listener-class> org.apache.myfaces.webapp.StartupServletContextListener </listener-class> </listener> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener

Spring框架讲解-基本概念

概念 一,Spring是什么 1,是一个应用程序框架,为应用程序的开发提供强大的支持,例如对事务处理和持久化的支持等等.2,是一个bean容器,管理bean对象的整个生命周期,维护bean的各种存在状态,例如bean对象的实例化.销毁.bean的单实例和多实例状态等等.3,是轻量级的框架和容器,与EJB相比较而言 二,基本概念 1,轻量级容器1)能够管理应用程序代码,但对原有代码没有侵入性或侵入性很小.例如不需要实现特定的接口(EJB则规定了繁琐的接口)2)启动快速(EJB容器启动太慢了).3)

关于Spring框架的一个问题。

问题描述 <beanid="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><propertyname="configLocation"value="classpath:ibatis.xml"/></bean>SqlMapClientFactoryBean的setConfigLocatio

举例讲解Java的Spring框架中AOP程序设计方式的使用_java

1.什么是AOP AOP是Aspect Oriented Programming的缩写,意思是面向方面编程,AOP实际是GoF设计模式的延续. 2.关于Spring AOP的一些术语: A.切面(Aspect):在Spring AOP中,切面可以使用通用类或者在普通类中以@Aspect 注解(@AspectJ风格)来实现 B.连接点(Joinpoint):在Spring AOP中一个连接点代表一个方法的执行 C.通知(Advice):在切面的某个特定的连接点(Joinpoint)上执行的动作.通