首页 > 其他分享 >SpringIOC容器

SpringIOC容器

时间:2023-10-06 22:44:08浏览次数:32  
标签:装配 容器 SpringIOC loC Spring Bean 注解

loc (控制反转) 概念

控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责,这样控制权就由应用转移到外部容器,控制权的转移就是所谓的反转 (控制权转移带来的好处就是降低了业务对象之间的依赖程度)

DI (依赖注入) 概念

依赖注入就是对象之间的依赖关系是在运行时动态注入的 (本质是利用Java 的反射机制)依赖注入分类构造器注入.方法注入.接口注入.
注: Spring 仅支持构造器注入和方法注入

什么是 loc 容器

loC 容器是 Spring 框架的核心 (Spring core) ,通过实现 C(控制反转) 和 DI (依赖注入) ,以降低类与类之间的依赖程度 (低合) ,从而奠定 Spring 框架的基石loc 容器 = 依赖注入 (loc) + 控制反转 (DI)什么是 Bean在loC 容器中创建的类实例统称为 Bean ( Spring 中使用 Bean 来表示应用组件)Spring 中使用 loC容器 (实现 loC) 来管理 Bean 的生命周期Spring 中使用 loc容器 (实现 DI) 来自动完成 Bean 与 Bean 的依赖关系

loc 容器三种创建方式

<1>ClassPathXmlApplication: 从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当做类资源

<2>FileSystemXmIApplicationContext: 读取文件系统下的XML配置文件并加载上下文定义

<3>XmIWebApplicationContext: 读取Web应用下的XML配置文件并加载上下文定义

装配 Bean

装配 Bean 就是在loC 容器中创建 Bean (loC,控制反转)以及确定 Bean 与 Bean 之间的依赖关系(DI,依赖注入)Spring 支持三种装配 Bean 的方式

基于 XML 配置

基于注解

基于java 类配置

构造器注入 Bean

Spring loC 容器构造器注入 Bean 使用 元素,使 Spring loC 容器在实例化 Bean 时可以不调用默认构造器,而是调用有参构造器

注解装配 Bean

使用注解自动装配与在XML配置中使用 autowire 属性自动装配并没有太大差别 (Spring oC容器默认禁用注解装配 Bean)
@Autowired 注解: 可以用于标注 setter 方法,Spring 就会尝试对该方法执行 bvTvpe 自动装配:还可以用于标注需要自动装配 Bean 引用的任意方法: 还可以用千标注构造器,当创建 Bean时,即使在XML 文件中没有使用 元素配置Bean,该构造器也需要进行自动装配;还可以用于直接标注属性,则可以删除 setter 方法 (@Autowire 注解甚至不受限于private关键字,仍然可以被自动装配)
@Resource 注解: 与 @Autowired 完全相同,唯一区别是默认安装 byName 装配 Bean,失败则按照 byType 装配 Bean
@Qualifier 注解: 如果 Spring 有多个适合自动装配的Bean,@Autowired 注解由于无法选择哪个 Bean 才是真正需要的,这时 Spring 将自动装配失败并抛出异常,这种情况下可以使用@Qualifier 注解来明确指定需要自动装配的Bean
@Scope 注解: 可以用于设置 Bean 的作用域
@Value 注解:可以用于属性、方法和构造器,作用是设置 Bean 的基本类型属性值
@PostConstructor 注解: 可以用于设置 Bean 的初始化方法
@PreDestrov 注解: 可以用于设置 Bean 的销毁方法

自动检测

Spring loC 容器支持自动检测 Bean 和定义 Bean,在不使用 元素的情况下,Spring 应用中的大多数甚至所有的 Bean 都能够实现定义和装配
@Component
@Controller
@Repository
@Service
通用的构造器注解,标识该类为 SpringloC 组件(通用)
标识将该类定义为 Spring MVC 的 controller 页面控制器 (表现层)标识将该类定义为数据仓库(持久层)
标识将该类定义为服务 (业务层)

标签:装配,容器,SpringIOC,loC,Spring,Bean,注解
From: https://www.cnblogs.com/shangeg/p/17745221.html

相关文章

  • 【Azure 容器应用】在中国区Azure上创建的容器服务默认应用域名不全
    问题描述在中国区Azure上,创建ContainerApp服务,发现默认的应用程序URL只有前半段,并不是一个完整的域名。这是什么情况呢?正常的ContainerApp的URL格式为:<containerappname>.<environment>.<region>.azurecontainerapps.cn。如:mymoreappinone04.icysand-c9bc5d4e.chinanorth3.......
  • IOC容器的注入例题
    publicclassClassServiceImpimplementsClassServiceInter{@AutowiredprivateClassDAOIntercdao; 那么cdao能被成功注入吗?如果不能,怎么修改? 答案:不能,因为ClassServiceImp不在IOC容器中,所以不能通过注解的方式来注入bean 第一种方法是在ClassServiceIm......
  • IoC容器
    前言IoC容器是Spring框架的核心组成部分之一。它是一个负责对象创建、组装和管理的容器,通过控制对象的创建和依赖关系的注入,实现了对象之间的解耦和灵活性。在传统的编程模型中,对象的创建和控制权通常由开发者负责,开发者需要手动实例化对象、处理对象之间的依赖关系并进行组装,这......
  • 基于hash_table对STL unordered系列容器的封装 #C++
    概述本文对hash_table进行封装,以模仿SGISTL对unordered系列容器进行简单实现,旨在加深对C++封装与泛型技法的体会与理解。阅读本文之前,建议先对哈希表进行学习。unordered_map与map一样,unordered_map的所有元素类型都是pair,pair的第一个成员为Key,第二个成员为Value。因为Key在任何......
  • SpringIOC
    ......
  • IoC容器趣谈
    今天我们来谈谈Spring的内核之一——IoC容器大家可能会有这样的疑问:”这玩意为啥要叫容器呢?好奇怪“”容器不是装东西的吗?难道IoC容器也是用来装什么东西的?“有上述两个想法的小伙伴,我觉得你们是非常聪明的,并且平时有思考的习惯。别着急,让我们慢慢往下看IoC容器的两大重要概......
  • springIoC
    IoC(控制反转):应用程序的依赖对象不自己创建和维护,交由统一的外部容器来创建和维护。这样控制权就由应用转移到外部容器。DI(依赖注入):通过IoC容器动态的向某个对象提供他需要的其他对象。 1..IoC容器的四种创建方式:ClassPathXmlApplicationContext:从项目的根目录下加载配置文件......
  • C++ STL标准容器的特点和典型的使用场景
    概念和作用C++标准模板库(StandardTemplateLibrary,STL)提供了一组通用的模板类和函数,用于处理常见的数据结构和算法。STL中的标准容器是其中的重要组成部分,它们提供了不同的数据结构和操作方式,适用于各种不同的使用场景。说白了,就是每一种容器代表一种特定的数据结构。我们在学C......
  • Python笔记:基本数据结构(容器)的优化
    列表的性能问题队列的弹出问题利用Python的原生语法很难写出一个真正完全能达到\(O(1)\)的队列,究其原因是由于insert方法的时间复杂度问题:classqueue: def__init__(self,q): self.q=[] defpopright(self): self.q.pop() defappendleft(self,elem): self.q.ins......
  • 16. Docker容器监控CAdvisor+InfluxDB+Granfana
    目录1、前言2、原始命令3、CAdvisor+InfluxDB+Granfana3.1、什么是CAdvisor3.2、什么是Influxdb3.3、什么是Granfana4、安装使用4.1、安装influxdb4.2、安装CAdvisor4.3、安装Granfana4.4、访问Influxdb4.5、创建CAdvisor数据库4.6、访问CAdvisor4.7、Grafana配置1、前言容器监控方......