如果没有使用Spring框架的时候,再项目中写Servlet的时候各组件之间是存在依赖关系的,看下面代码:
// 处理用户登录请求的Servlet组件类 public class LoginServlet { private UserDao userDao = new UserDao(); public void doPost() { userDao.login(); } } // 处理用户数据增删改查的组件 public class UserDao { public void login() { // 通过JDBC技术实现数据查询,判断用户名与密码是否正确 } }也就是说,LoginServlet的完成是依赖于UserDao的,这样的话就会导致耦合度高的问题!在UserDao中通过基本原始的JDBC来实现数据访问的,如果改为MyBatis框架技术实现的话就会创UserMybatisDao类,取代UserDao,这样的话就要大量的替换代码:
private UserDao userDao= new UserDao();全部替换为:
private UserMybatisDao userDao = new UserMybatisDao();这种牵一发动全身问题也就是高耦合的表现,我们需要降低耦合度,解耦!!!
通过以上的操作,就 实现解耦啦! 还有就是,我们可以使用工厂模式来生产类:
public class DaoFactory{ public static Dao newInstance(){ return new UserMybatisDao(); } }有工厂模式以后,Servlet的持久层数据创建对象的代码就可以写成:
UserDao user = DaoFactory.newInstance();这样以后,不管是用UserDao还是UserMybatisDao,在替换时只要替换掉UserDaoFactory里面的return的对象就行了!通过定义接口喝创建工程类来解耦,实际开发中不会为每一个组键都创建工厂类的,这时就会使用Spring框架,它相当于一个庞大的工厂,将某些类的对象交给Spring来管理,在后续的使用过程中,就不要自己创建对象了,而是获取对象就好!