热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Spring开发之组件赋值的实现方法

这篇文章主要介绍了Spring开发之组件赋值的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. @Value & @PropertySource

1.1 使用方式

@PropertySource:读取外部配置文件中的 k/v 保存到运行的环境变量中;加载完外部的配置文件以后使用 ${} 取出配置文件的值

@Value:赋值

  • 基本数值
  • 可以写 SpEL,#{}
  • 可以写 ${};取出配置文件【properties】中的值(在运行环境变量里面的值)

1.2 代码

1. Person

@Data
@Slf4j
@ToString
public class Person {

  @Value("#{001+001}")
  private Long id;

  @Value("zs")
  private String name;

  @Value("${person.address}")
  private String address;

  @Value("${person.age:19}")
  private Integer age;

}

2. SpringConfig

@Configuration
@PropertySource(value = "classpath:person.properties")
public class SpringConfig {

  @Bean
  public Person person() {
    return new Person();
  }

}

3. PropertiesTest

public class PropertiesTest {

  public static void main(String[] args) {
    AnnotationConfigApplicationContext cOntext= new AnnotationConfigApplicationContext(SpringConfig.class);
    Person person = context.getBean(Person.class);
    System.out.println(person);
    //Person(id=2, name=zs, address=上海市, age=19)
  }

}

2. @Profile

2.1 使用方式

@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件

加了环境标识的 bean,只有这个环境被激活的时候才能注册到容器中。默认是 default 环境

写在配置类上,只有是指定的环境的时候,整个配置类里面的所有配置才能开始生效

没有标注环境标识的 bean 在任何环境下都是加载的

2.2 代码

1. Message

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Message {

  private String label = null;

}

2. SpringConfig

@Configuration
public class SpringConfig {

  @Profile("default")
  @Bean
  public Message defaultMessage() {
    return new Message("default");
  }

  @Profile("dev")
  @Bean
  public Message devMessage() {
    return new Message("dev");
  }

  @Profile("test")
  @Bean
  public Message testMessage() {
    return new Message("test");
  }

  @Profile("prod")
  @Bean
  public Message prodMessage() {
    return new Message("prod");
  }

}

3. 激活方式 1

激活 profile:设置虚拟机参数 -Dspring.profiles.active=dev,test

public class ProfileTest {

  public static void main(String[] args) {
    
    AnnotationConfigApplicationContext cOntext= new AnnotationConfigApplicationContext(SpringConfig.class);
    String[] names = context.getBeanNamesForType(Message.class);
    for (String name : names) {
      System.out.println(name);
    }
    //devMessage
    //prodMessage
  }

}

4. 激活方式 2

public class ProfileTest {

  public static void main(String[] args) {
    //1. 创建一个 AnnotationConfigApplicationContext
    AnnotationConfigApplicationContext cOntext= new AnnotationConfigApplicationContext();
    //2. 设置需要激活的环境
    context.getEnvironment().setActiveProfiles("dev", "prod");
    //3. 注册主配置类
    context.register(SpringConfig.class);
    //4. 刷新容器
    context.refresh();
    String[] names = context.getBeanNamesForType(Message.class);
    for (String name : names) {
      System.out.println(name);
    }
    //testMessage
    //prodMessage
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
  • 本文详细介绍了HTML5的核心特性,包括新增的表单元素与验证API、多媒体处理(如视频和音频)、Canvas绘图技术以及新的API(例如拖拽功能和Web存储)等。 ... [详细]
  • DOM 属性快速参考指南
    本文档提供了一系列常用的 DOM 属性及其用法说明,旨在帮助开发者快速理解和应用这些属性。 ... [详细]
  • 全面解读Apache Flink的核心架构与优势
    Apache Flink作为大数据处理领域的新兴力量,凭借其独特的流处理能力和高效的批处理性能,迅速获得了广泛的关注。本文旨在深入探讨Flink的关键技术特点及其应用场景,为大数据处理提供新的视角。 ... [详细]
  • 增强Tomcat安全性:有效防止后台攻击
    在构建可靠的系统架构时,确保安全是至关重要的一步。本文将重点探讨Tomcat这一流行的开源Web应用服务器的安全配置,以帮助开发者和运维人员提高其应用程序的安全性。 ... [详细]
  • 本文深入探讨了Kubernetes中Pod的基础概念及其分类,旨在帮助读者更好地理解和利用这一核心组件。通过详细的解析,我们将了解Pod如何作为最小的部署单元在Kubernetes集群中工作。 ... [详细]
  • 本文介绍了如何利用高德地图API实现一个高效的地点选择组件,适用于需要用户选择具体位置的应用场景,如活动邀请函填写等。该组件支持从地图中选择地点,并自动将地点信息回填至表单中。 ... [详细]
  • 2022起重机械指挥特种作业证考试题库及模拟考试
    题库来源:安全生产模拟考试一点通公众号小程序2022年起重机械指挥考试试题为起重机械指挥考题考前必练习题目!2022起重机械指挥特种作业证考试题库及模 ... [详细]
  • 本文探讨了缓存系统中的两个关键问题——缓存穿透与缓存失效时的雪崩效应,以及这些问题的解决方案。此外,文章还介绍了数据处理、数据库拆分策略、缓存优化、拆分策略、应用架构演进及通信协议的选择等内容。 ... [详细]
  • 本文介绍如何通过Spring Boot配置解决请求参数中出现反斜杠等非保留字符导致的错误,确保应用程序能够正确处理这类特殊字符。 ... [详细]
  • 深入解析 Android 中的 ActivityGroup 实现
    本文详细探讨了如何在 Android 应用中使用 ActivityGroup 来实现类似微博客户端主界面的效果,并分析了 TabActivity 的局限性,推荐使用更为灵活的 ActivityGroup 方案。 ... [详细]
  • Kubernetes与Docker之间的关系解析
    本文探讨了Kubernetes(简称k8s)与Docker之间的关系,旨在帮助读者理解这两种技术如何协同工作,以提高应用程序的部署效率和可扩展性。文章首先介绍了两者的基本概念,然后从虚拟化和部署的角度深入分析。 ... [详细]
  • Docker环境下Redis的安装与配置
    本文详细介绍了如何在Docker环境中安装和配置Redis,包括镜像下载、容器启动、连接测试以及持久化设置等步骤。同时,还提供了使用Redis可视化管理工具的方法,帮助用户更好地管理和监控Redis实例。 ... [详细]
  • Java 中SimpleDateFormat 错误用法及改正 ... [详细]
author-avatar
gogo迷失的大G
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有