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

    技术2022-05-11  29

    一,场景:编写一个用户管理的服务层,包括增加用户、删除用户和查询用户等等,而且用户信息以关系型数据库形式存储。分析:这是一个典型的应用服务,涉及到业务层(Business Objects Layer)、数据库访问层(DB Access)和存储层(EIS)。采用典型的架构:BO+DAODAO采用Spring提供的JdbcTemplate来进行封装。

    二,具体实现

    1)用户类Userpublic 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)业务类UserManageServicepublic 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_USERusername   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();    }}


    最新回复(0)