依赖、spring ioc容器

依赖、spring ioc容器

什么是依赖

当一个对象A需要对象B才能运行,那么对象A依赖对象B

案例

比如如下类依赖HttpServlet才能运行

@WebServlet("/login")
public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");

        User user = new User();
        user.setUserName(req.getParameter("name"));
        user.setUserPassword(req.getParameter("password"));

        User user1 = new UserService().login(user);
        if (user.getUserName().equals(user1.getUserName()) && user.getUserPassword().equals(user1.getUserPassword())) {
            resp.getWriter().println(new ObjectMapper().writeValueAsString(user1));
        } else {
            // 登录失败时,返回500状态码
            resp.setStatus(500);
            resp.getWriter().print("账号或者密码有误");
        }
    }
}

什么是 IoC?什么是 Spring IoC 容器?

IoC(Inversion of Control),即控制反转,也被称为依赖注入(Dependency Injection,
DI)。
IoC是描述对象之间依赖关系的过程
Spring没出现是,只能我们自己去创建依赖或者查找依赖
但是Spring出现后,只有把对象交给Spring处理,这些对象可以理解为存放在一个容器中,这个容器称为Spring IoC容器
IoC容器中,对象不需要自己管理依赖

通过构造方法、参数、工厂方法的参数或者在对象创建后通过属性设置来定义它们的依赖关系。

如何理解“控制反转的概念主要是与传统的直接构造(即 new 操作)来控制对象依赖的方式相反。传统方式
中,一个对象通常会直接创建或查找它所依赖的其他对象,而在 IoC 中,对象将自身的控制权交给
了容器,容器负责管理对象的创建和依赖注入,因此被称为「控制反转」。”

参考

Spring 核心概念之一 IoC
https://articles.zsxq.com/id_n02woahj6kw2.html