当前位置:   article > 正文

Spring 框架入门介绍及IoC的三种注入方式_ioc的方式

ioc的方式

目录

一、Spring 简介

1. 简介

2. spring 的核心模块 ⭐

 二、IoC 的概念

2.1 IoC 详解

2.2 IoC的好处

2.3 谈谈你对IoC的理解

三、IoC的三种注入方式

3.1 构造方法注入

3.2 setter方法注入

3.3 接口注入(自动分配)

3.4 spring上下文与tomcat整合

3.5 总结


一、Spring 简介

1. 简介

        Spring框架是 Java 平台的一个开源的全栈(full-stack应用程序框架控制反转容器实现,一般被直接称为 Spring。它由Rod Johnson创建,去搜索了它的资料很难想象Rod Johnson之前是学音乐。该框架的一些核心功能理论上可用于任何 Java 应用,它还为基于Java企业版平台构建的 Web 应用提供了大量的拓展支持。Spring 没有直接实现任何的编程模型,但它已经在 Java 社区中广为流行,基本上完全代替了 企业级JavaBeans(EJB)模型。

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

目的:解决企业应用开发的复杂性

功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

范围:任何Java应用

2. spring 的核心模块 ⭐

  1. 控制反转(IoC):Spring通过IoC容器管理应用程序中的对象依赖关系。它将对象的创建、组装和管理工作交给了容器,开发人员只需要关注业务逻辑的实现。

  2. 面向切面编程(AOP):Spring支持AOP,可以将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来,提高代码的模块化和可重用性。

  3. 数据访问支持:Spring提供了对各种数据访问技术的支持,包括JDBC、ORM(如Hibernate、MyBatis)、JPA等。它简化了数据访问层的开发,提供了事务管理和异常处理等功能。

  4. Web开发支持:Spring提供了一套全面的Web开发框架,包括Spring MVC和Spring WebFlux。它们可以帮助开发人员构建灵活、高效的Web应用程序。

  5. 安全性支持:Spring提供了一套强大的安全性框架,可以用于认证、授权和安全性管理。它支持各种认证方式,如基于表单、基于HTTP基本认证、基于OAuth等。

        此外,Spring还提供了许多其他功能和扩展,如缓存支持、消息队列、调度任务等。它的模块化设计使得开发人员可以根据需要选择使用的功能,从而提高开发效率。

 二、IoC 的概念

2.1 IoC 详解

  • Spring框架中的IoC(Inversion of Control,控制反转)是指将对象的创建、依赖关系的管理和对象的生命周期等控制权从应用程序代码中转移到框架中。在IoC的概念下,对象的创建和管理不再由开发人员直接控制,而是由Spring容器来负责。
  • IoC的核心思想是通过依赖注入(Dependency Injection,DI)来实现对象之间的解耦。依赖注入是指在对象创建的过程中,将其所依赖的其他对象的引用注入到对象中,从而实现对象之间的关系建立和协作。通过依赖注入,对象不再负责自己依赖对象的创建和查找,而是由容器来完成。
  • Spring框架中的IoC容器负责管理对象的生命周期和依赖关系。它通过配置文件(如XML配置文件)或注解的方式描述对象之间的依赖关系,并在应用程序启动时将这些对象实例化并组装起来。开发人员只需要定义对象的行为,而无需关心对象的创建和管理过程。

2.2 IoC的好处

  1. 解耦:通过依赖注入,对象之间的依赖关系被明确地声明在配置文件或注解中,使得对象之间的耦合度降低,提高了代码的可维护性和可测试性。

  2. 简化对象的创建和管理:由容器负责对象的创建和生命周期管理,开发人员只需关注对象的行为逻辑,而无需手动管理对象的创建和销毁。

  3. 提供灵活的配置方式:通过配置文件或注解,可以方便地修改对象之间的依赖关系,实现灵活的配置和组装。

  4. 支持AOP(Aspect-Oriented Programming):Spring框架提供了面向切面编程的支持,可以通过IoC容器将横切逻辑(如日志、事务管理等)与业务逻辑分离,提高了代码的模块化和可维护性。

2.3 谈谈你对IoC的理解

        Spring框架中的IoC(控制反转)通过依赖注入实现对象之间的解耦,将对象的创建和管理交由容器负责。使用IoC容器可以简化对象的创建和管理过程,提高代码的可维护性和可测试性。通过灵活的配置方式,可以方便地修改对象之间的依赖关系。同时,IoC容器的存在也为AOP提供了支持,使得横切逻辑与业务逻辑分离,提高了代码的模块化和可维护性。

三、IoC的三种注入方式

3.1 构造方法注入

一、构造函数注入(Constructor Injection):通过构造函数来注入依赖对象。在类的构造函数中声明依赖对象的参数,并在容器中配置时提供相应的依赖对象。当创建对象实例时,容器会自动将依赖对象传递给构造函数,完成依赖注入。

示例代码:

1. 编写一个接口定义修改用户信息的方法

  1. package com.ycxw.ioc.service;
  2. /**
  3. * @author 云村小威
  4. * @site blog.csdn.net/Justw320
  5. * @create 2023-08-16 22:28
  6. */
  7. public interface UserService {
  8. /**
  9. * 方法功能:修改用户信息
  10. */
  11. public void edit();
  12. }

2. 编写一个service类来实现这个接口中的方法

  1. package com.ycxw.ioc.service.impl;
  2. import com.ycxw.ioc.service.UserService;
  3. /**
  4. * @author 云村小威
  5. * @site blog.csdn.net/Justw320
  6. * @create 2023-08-16 22:29
  7. *
  8. */
  9. public class UserServiceImpl1 implements UserService {
  10. @Override
  11. public void edit() {
  12. System.out.println("更改了用户的信息");
  13. }
  14. }

3. 编写控制器(action)进行调用并编写无参和有参构造方法

  1. package com.ycxw.ioc.web;
  2. import com.ycxw.ioc.service.UserService;
  3. /**
  4. * @author 云村小威
  5. * @site blog.csdn.net/Justw320
  6. * @create 2023-08-16 22:30
  7. *
  8. */
  9. public class UserAction {
  10. private UserService userService;
  11. public UserAction() {
  12. }
  13. public UserAction(UserService userService) {
  14. this.userService = userService;
  15. }
  16. public String edits(){
  17. userService.edit();
  18. return "list";
  19. }
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/241622
推荐阅读
相关标签