前言
作为一名 Java
开发,对 spring
框架是再熟悉不过的了。spring
支持的控制反转(Inversion of Control
,缩写为IOC
)和面向切面编程(Aspect-oriented programming
,缩写为AOP
)早已成为我们的开发习惯,仿佛 Java
开发天生就该如此。人总是会忽略习以为常的事物,所有人都熟练使用 IOC
和 AOP
,却鲜有人说得清楚到底为什么要用 IOC
和 AOP
spring IOC
我们现在假设回到了没有 IOC
的时代,用传统的 servlet
进行开发
传统开发模式的弊端
三层架构是经典的开发模式,我们一般将视图控制、业务逻辑和数据库操作分别抽离出来单独形成一个类,这样各个职责就非常清晰且易于复用和维护。大致代码如下:
@WebServlet("/user")
public class UserServlet extends HttpServlet {
// 用于执行业务逻辑的对象
private UserService userService = new UserServiceImpl();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// ...省略其他代码
// 执行业务逻辑
userService.doService();
// ...返回页面视图
}
}
public class UserServiceImpl implements UserService{
// 用于操作数据库的对象
private UserDao userDao = new UserDaoImpl();
@Override
public void doService() {
// ...省略业务逻辑代码
// 执行数据库操作
userDao.doUpdate();
// ...省略业务逻辑代码
}
}