栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring 备忘录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring 备忘录

Spring 备忘录
  • Spring Framework
    • IoC容器
      • ApplicationContext接口
      • 类路径扫描和托管组件
      • 基于Java的容器配置
      • 对属性源的可配置层次结构的搜索操作

Spring Framework IoC容器

Spring Framework 的控制反转 (IoC) 容器,IoC 也称为依赖注入 (DI)
1.对象仅通过构造函数参数、工厂方法的参数或在 对象实例被构造 或从工厂方法返回后设置的属性来 定义它们的依赖关系(即与它们一起工作的其他对象)
2.容器在创建 bean 时注入这些依赖项。 这个过程基本上是 bean 本身通过使用类的直接构造 或诸如服务定位器模式之类的机制来 控制其依赖关系的实例化 或位置的逆过程(因此称为控制反转)


简单概括:定义依赖关系 -> 控制其依赖关系的实例化
依赖注入(DI): 基于构造函数的依赖注入和基于 Setter 的依赖注入

Spring 团队通常提倡构造函数注入,因为它允许您将应用程序组件实现为不可变对象,并确保所需的依赖项不是null

ApplicationContext接口
  • 代表 Spring IoC 容器,负责实例化、配置和组装 bean
  • 容器通过 读取配置元数据 来获取关于要实例化、配置和组装哪些对象的指令
  • 基于注解的配置元数据
    • @Autowired
      • 应用于构造函数
      • 如果目标 bean 仅定义一个构造函数开始,则不再需要对此类构造函数进行注释。但是,如果有多个构造函数可用并且没有主/默认构造函数,则必须至少对其中一个构造函数进行注释,@Autowired以指示容器使用哪一个
      • 应用于传统的setter 方法
      • @Autowired(required = false):使框架能够通过将其标记为非必需来跳过不可满足的注入点
    • @Resource
      • @Resource采用名称属性。默认情况下,Spring 将该值解释为要注入的 bean 名称。
    • @Value
      • 用于注入外部属性@value(“${xxx.xxx}”),结合@Configuration
        @PropertySource(“classpath:xxxx.yml”)
类路径扫描和托管组件
  • @Component是任何 Spring 管理的组件的通用构造型
  • @Repository在持久层(已经支持作为持久层中自动异常转换的标记)
  • @Service在服务层
  • @RestController在表示层
    • @RestController在Spring MVC 的注解由@Controller和 组成@ResponseBody
  • 自动检测类和注册 Bean 定义
    • 添加 @ComponentScan到您的@Configuration类中,其中basePackages属性是两个类的公共父包。(或者,您可以指定一个逗号或分号或空格分隔的列表,其中包括每个类的父包。)
@Configuration
@ComponentScan(basePackages = "org.example")
public class AppConfig  {
    // ...
}
基于Java的容器配置
  • 核心工件:@Configuration注释的类和带@Bean注释的方法
    • @Bean注解用于表示一个方法实例化、配置和初始化一个由 Spring IoC 容器管理的新对象
    • @Configuration表明它的主要目的是作为 bean 定义的来源
对属性源的可配置层次结构的搜索操作

Spring 的Environment抽象提供了对属性源的可配置层次结构的搜索操作

ApplicationContext ctx = new GenericApplicationContext();
Environment env = ctx.getEnvironment();
boolean containsMyProperty = env.containsProperty("my-property");
System.out.println("Does my environment contain the 'my-property' property? " + containsMyProperty);

Spring StandardEnvironment 配置了两个 PropertySource 对象——一个代表 JVM 系统属性集(System.getProperties()),一个代表 系统环境变量集(System.getenv())

自定义属性源:请实现并实例化您自己的PropertySource并将其添加到PropertySources当前Environment

ConfigurableApplicationContext ctx = new GenericApplicationContext();
MutablePropertySources sources = ctx.getEnvironment().getPropertySources();
sources.addFirst(new MyPropertySource());
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号