Spring服务层(service)与dao层结合

1 篇文章 0 订阅

Spring–服务层与dao层传统写法示例

  • 1.在web-inf目目录下创建lib文件夹,将相关jar包全部引入

  • 2.在src下创建配置文件(applicationContext.xml)

  • 3.在src下创建service、dao、test包

  • 4.在service包下创建接口(UserService.java),并创建类(UserServiceImpl.java)实现接口中的方法。

    //创建service接口
    public interface UserService {
        public void delete();
    }
    
    public class UserServiceImpl implements UserService{
    	@Override
        public void delete() {
           
        }
    }
    
  • 5.创建用户的Dao接口(UserDao.java),并创建类(UserDaoImpl)实现接口中的方法

    public interface UserDao {
        public void delete();
    }
    
    public class UserDaoImpl implements UserDao{
        @Override
        public void delete() {
            System.out.println("从数据库当中删除记录");
        }
    }
    
  • 6.在UserServiceImpl中new一个UserDaoImpl,并调用其中的方法

    public class UserServiceImpl implements UserService{
    	private UserDao userDao = new UserDaoImpl();
    	@Override
        public void delete() {
           userDao.delete();
        }
    }
    
  • 7.在test包中创建测试类:在测试类中创建UserService的接口,并调用其中的方法即可层层完成操作

    public class UserTest {
        @Test
        public void test(){
            UserService userService = new UserServiceImpl();
            userService.delete();
        }
    }
    

Spring–服务层与dao层Spring配置写法

  • 1.在applicationContext.xml中添加配置

    <!--配置文件的方式-->
        <bean id="userDao" class="com.helong.dao.UserDaoImpl"></bean>
        <bean id="userService" class="com.helong.service.UserServiceImpl">
            <property name="userDao" ref="userDao"/>
        </bean>
    
  • 2.将UserDaoImpl类中new new UserDaoImpl();修改为类的属性并为该属性添加set方法

    public class UserServiceImpl implements UserService{
    	private UserDao userDao;
    	public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    	
    	@Override
        public void delete() {
           userDao.delete();
        }
    }
    
  • 3.测试

    public class UserTest {
        @Test
        public void test(){
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserService userService = (UserService) applicationContext.getBean("userService");
            userService.delete();
          }
    }
    

Spring–服务层与dao层Spring注解的写法

  • 1.在applicationContext.xml中添加类的注解扫描

    <!--注解的方式-->
    <!--先要告诉哪个包要使用注解-->
    <context:component-scan base-package="com.helong"/><!--这种写法表示在这个目录之下的所有的文件均会被注解扫描-->
    
    • 2.在类中添加注解

      • UserServiceImpl中调用的是UserDaoImpl类中的方法,所以要给UserDaoImpl类创建注解并在UserServiceImpl类中使用注解获得这个类
      @Repository("userDao")//添加位置
      public class UserDaoImpl implements UserDao{
          @Override
          public void delete() {
              System.out.println("从数据库当中删除记录");
          }
      }
      
      public class UserServiceImpl implements UserService{
          /*
          //方式一
          @Autowired//这种方式自动加载不会显这个类是从哪个注入过来的所以一般不用
      	 private UserDao userDao;	
      	*/
      
      
      	//方式二,这种方式指定是从哪儿获取过来的,便于理解
          @Resource(name="userDao")
          private UserDao userDao;
      
          @Override
          public void delete() {
              userDao.delete();
          }
      }
      
    • 编写测试类,由于测试类要通过UserServiceImpl 来获取操作(层层联系的方式),所以要在该类前面加上注解,然后测试类再通过getBean(“对应类的注解的名字”)来为这个类创建对象

      @Service("userService")
      public class UserServiceImpl implements UserService{
          /*
          //方式一
          @Autowired//这种方式自动加载不会显这个类是从哪个注入过来的所以一般不用
      	 private UserDao userDao;	
      	*/
      
      
      	//方式二,这种方式指定是从哪儿获取过来的,便于理解
          @Resource(name="userDao")
          private UserDao userDao;
      
          @Override
          public void delete() {
              userDao.delete();
          }
      }
      
      public class UserTest {
          @Test
          public void test(){
              ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
              UserService userService = (UserService) applicationContext.getBean("userService");
              userService.delete();
          }
      }
      
      
注:
  • @Repository(“userDao”), @Resource(name=“userDao”)的写法都代表的是同一个意思,注释在不同的层次中的不同表示
  • service层和dao层之间都是通过面向接口编程的方式来实现的,层层之间是相互联系的,层层递进的
  • 在使用注解的时候,可以先想一想传统的方式是怎么实现的,然后把这种实现方法用注解代替即可。这样更便于理解。
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值