目录

  • IoC容器
  • IoC实现方法
    • 依赖注入
    • 依赖查找
  • 认识Servlet容器
  • 实例
    • 实例1:使用IoC管理Bean
    • 实例2:Servlet处理请求

IoC容器

IoC容器,是面向对象编程中的一种设计原则,意为控制反转。他将程序中创建对象的控制权交给Spring框架来管理,以便降低计算机代码之间的耦合度。
控制反转的实质是获得依赖对象的过程被反转了。这个过程由自身管理变为由IoC容器主动注入。这正是IoC实现的方式之一:依赖注入,由IoC容器在运行期间动态地将某种依赖关系注入对象之中。

IoC实现方法

IoC的实现方法主要有两种——依赖注入和依赖查找。

依赖注入

IoC容器通过类型或名称等信息将不同对象注入不同属性中。组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。这是最流行的IoC方法。依赖注入主要有以下几种方式。

  • 设值注入:让IoC容器调用注入所依赖类型的对象。
  • 接口注入:实现特定接口,以供IoC容器注入所依赖类型的对象。
  • 构造注入:实现特定参数的构造函数,在创建对象时让IoC容器注入所依赖类型的对象。
  • 基于注解:通过Java的注解机制让IoC容器注入所依赖类型的对象,例如,使用@Autowired。
    IoC是通过第三方容器来管理并维护这些被依赖对象的,应用程序只需要接受并使用IoC容器注入的对象。

依赖查找

在传统实现中,需要用户使用API来管理依赖的创建,查找资源和组装对象。这会对程序有侵入性。
依赖查找则通过调用容器提供的回调接口和上下文环境来获取对象,在获取时需要提供相关的配置文件路径、key等信息来确定获取对象的状态。依赖查找通常有两个方法——
依赖拖拽和上下文依赖查找。

认识Servlet容器

Servlet是在javax.servlet包中定义的一个接口。在开发Spring Boot应用程序时,使用Controller基本能解决大部分的功能需求。但有时也需要使用Servlet,比如实现拦截和监听功能。
Spring Boot的核心控制器DispatcherServlet会处理所有的请求。如果自定义Servlet,则需要进行注册,以便DispatcherServlet核心控制器知道它的作用,以及处理请求url-pattern。

实例

实例1:使用IoC管理Bean

  • 创建 一个Bean
@Data
public class User implements Serializable {private int id;private String name;
}
  • 编写User的配置类
@Configuration
public class UserConfig {/*** 产生一个Bean,并交给Spring管理* @return*/@Bean("user1")public User user() {User user = new User();user.setId(1);user.setName("springboot");return user;}
}
  • 编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class IocTest {@Autowiredprivate ApplicationContext applicationContext;@Testpublic void testIoc() {User user = (User) applicationContext.getBean("user1");log.info("当前用户:{}", user);}
}

运行结果:

当前用户:User(id=1, name=springboot)

实例2:Servlet处理请求

  • 注册Servlet类
@WebServlet(urlPatterns = "/demoServlet/*")
public class DemoServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doGet");resp.getWriter().println("Servlet ServletDemo");}
}
  • 开启Servlet支持
@ServletComponentScan
@SpringBootApplication
public class HelloWordApplication {public static void main(String[] args) {SpringApplication.run(HelloWordApplication.class, args);}

IoC容器和Servlet容器相关推荐

  1. Spring boot配置Servlet容器

    配置Servlet容器 Spring boot默认使用Tomcat,作为Servlet容器 也支持Jetty.Undertow作为Servlet容器 Jetty 适合开发长连接应用 长连接,表示一直进 ...

  2. tomcat(5)servlet容器

    [0]README 0.0)本文部分文字描述转自:"深入剖析tomcat",旨在学习 tomcat(5)servlet容器 的基础知识: 0.1)intro to servlet容 ...

  3. servlet容器,web容器,spring容器,springmvc容器的区别

    这个理解我可以通过一个http的页面请求来说明. web容器中有servlet容器,spring项目部署后存在spring容器.其中spring控制service层和dao层的bean对象以及cont ...

  4. Servlet 容器和 Web 服务器的区别

    目录 1.什么是Web服务器? 2.什么是Servlet容器? 3.Servlet 容器与Web服务器的区别和联系 1.什么是Web服务器? Web 服务器是一种提供 Web 服务的软件,主要用于接收 ...

  5. tomcat(5)servlet容器(lastest version)

    [0]README 0.0)本文部分文字描述转自:"深入剖析tomcat",旨在学习 tomcat(5)servlet容器 的基础知识: 0.1)intro to servlet容 ...

  6. 理解Servlet和Servlet容器、Web容器等概念

    Tomcat容器属于web容器的一种,web容器还包括weblogic容器.JBoss容器等:而Tcomcat.webLogic等包含servlet容器. web容器:可以部署多个WEB应用程序的环境 ...

  7. 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署

    嵌入式 servlet 容器 在 spring boot 之前的web开发,我们都是把我们的应用部署到 Tomcat 等servelt容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spr ...

  8. SpringBoot之配置嵌入式Servlet容器

    1.概述 文章目录 1.概述 2.如何修改SpringBoot的默认配置 3.定制和修改Servlet容器的相关配置 4.注册Servlet三大组件 5.替换为其他嵌入式Servlet容器 6.嵌入式 ...

  9. springboot-嵌入式Servlet容器(Tomcat)源码分析以及容器切换

    目录 一.springboot的嵌入式Servlet容器(tomcat) 1.原理 2.源码 (1)ServletWebServerApplicationContext的createWebServer ...

最新文章

  1. 1元体验微软公有云,看起来还不错
  2. itop修改附件上传大小限制
  3. Java使用正则表达式
  4. 得物App联合Zippo推出限量款打火机 首批开售十分钟即售罄
  5. python3、pycharm的安装以及python基本语法
  6. hadoop 动态添加节点datanode及tasktracker
  7. This dependency was not found: * !!vue-style-loader!css-loader?……解决方案
  8. iOS开发编译错误:std::terminate(), referenced from:
  9. ThreadLocal对象使用过程中容易陷入的坑
  10. 第08章节-Python3.5-Django工程创建 7
  11. NS3中路由协议分析【AODV理论分析】
  12. 数字人轻松学习Blender系列之八:建模-1
  13. js禁止中文输入 最简洁的【禁止输入中文】
  14. 说一下反三角函数atan等的角度计算值,弧度制和角度制
  15. Linux 下编译出现“ln failed to create symbolic link operation not supported”
  16. 【支持升级官方最新版】西部数码主机代理系统模板源码IDC网站源码虚拟主机代理管理系统
  17. 实战篇:VMware Workstation 虚拟机安装 Linux 系统
  18. 搭建SPA项目SPA项目中使用路由嵌套路由
  19. 一条SQL返回多个统计求和
  20. Andrew Ng机器学习课程笔记--week9(下)(推荐系统协同过滤)

热门文章

  1. 数字信号处理的MATLAB实现——快速傅里叶变换
  2. 如何远程控制和管理LoRa网关?
  3. 计算机校园生活助手开题报告,基于Bmob移动后端的校园生活平台–HBUT版(Android),毕业论文设计,答辩ppt,开题报告,外文翻译,app,ppt,计算机,定制修改调试...
  4. Linux的软链接与硬链接
  5. stm32F407-------电容触摸按键
  6. cad要素转ppt可编辑emf——城市规划(六)
  7. 私服服务器显示关闭怎么办,《魔兽世界》私服关闭
  8. 2019辽宁公务员考试申论模拟题:网络直播发展存在的多重难题
  9. 前端实现页面变灰功能(含 Flutter )
  10. 易优cms 专业授权域名的验证教程指南 Eyoucms快速入门