首页 > 编程语言 > 详细

2.SpringIOC思想

时间:2020-07-16 23:26:53      阅读:59      评论:0      收藏:0      [点我收藏+]

2.SpringIOC思想

2.1 聊聊我们传统的service、dao层

第一步:我们试着写一个简单的例子

  • dao层我们写接口和实现类

 public interface UserDao {
 ?
     void getName();
 }
 public class UserDaoImpl implements UserDao {
     @Override
     public void getName() {
         System.out.println("user对象执行了!");
    }
 }
  • service层我们也写接口和实现类

 public interface UserService {
 ?
      void getName();
 }
 public class UserServiceImpl implements UserService {
     private UserDao userDao=new UserDaoImpl();
 ?
     @Override
     public void getName() {
         userDao.getName();
    }
 }
  • 再写一个测试类

 public class TestIOC {
 ?
     public static void main(String[] args) {
         UserService userService=new UserServiceImpl();
         userService.getName();
    }
 }

此时我们调用userService的方法由于service层调用了dao层我们会执行getName方法并且输出数据到控制台。

 

2.2 聊聊改进的方式实现IOC

 

试想一下,假如我们需要增加一个学生对象呢?

  • 我们第一步是需要在dao层写dao学生实现类去实现dao层接口

  • 然后还要在service层实现类修改初始化的dao实例对象

  • 这样子是不是耦合度太高了呢????

  • 我只是在dao新增一个对象,我却要改全局的代码,试想一下如果逻辑业务多,是否是一个耗时耗力,成本十分高的工作呢?

因此我们能不能在service层一次性初始化完,之后我们不论要新增什么对象,都不需要动service层代码,把控制管理权给别人,自己被动调用,在需要的时候直接调用就行。

  • 我们于是将直接初始化改成set注入

  •  public class UserServiceImpl implements UserService {
         private  UserDao userDao;
     ?
         public  void setUserDao(UserDao userDao) {
             this.userDao = userDao;
        }
     ?
         @Override
         public void getName() {
             userDao.getName();
        }
     }
  • 再看看现在的实现类写法

  •  public static void main(String[] args) {
         UserServiceImpl userService=new UserServiceImpl();
         userService.setUserDao(new StudentDaoImpl());
         userService.getName();
     ?
     }
  • 会发现此时我们有新的需求,需要创建新的对象我们不需要再去动service层,而只需要在调用的时候实例化这个对象,并且执行他里面的方法就能获取到数据。

总结:是不是通过set注入减少了开发成本的同时,实现了代码的松耦合呢,将主动权给到用户方,我们并不需要改动原有架构,其实这就是IOC的原型,控制反转

 技术分享图片

 

2.SpringIOC思想

原文:https://www.cnblogs.com/xuan-study/p/13325319.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!