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) {无锡人流医院哪家好 http://www.bhnnkyy120.com/

  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

  }

  }

Spring 开发之组件赋值的更多相关文章

  1. [网页游戏开发]Morn组件赋值

    在讲解List之前,我们先介绍一下Morn组件赋值功能 默认属性赋值 界面逻辑开发过程中,经常会涉及到动态更改UI属性,比如: 界面有一个按钮,一个多选框和一个文本,分别命名为myButton,myC ...

  2. 使用Spring开发第一个HelloWorld应用

    http://www.importnew.com/13246.html 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclips ...

  3. 简要描述如何结合struts、hibernate、spring开发Web应用?

    简要描述如何结合struts.hibernate.spring开发Web应用? 解答:Struts可以将jsp页面的表单关联起来,就是把JSP页面的表单数据封装成javaBean,这样的话,在acti ...

  4. 学习spring2--跟我一起学Spring 3(3)–使用Spring开发第一个HelloWorld应用

    http://www.importnew.com/13246.html     首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所有文章 资讯 ...

  5. ActiveMQ学习笔记(6)----ActiveMQ整合Spring开发

    1. 添加依赖 spring 提供了对JMS的支持,需要添加Spring支持jms的包和Spring的核心包,如下: <dependency> <groupId>org.apa ...

  6. iOS开发之组件化架构漫谈

    前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...

  7. 【Spring学习笔记-0】Spring开发所需要的核心jar包

    spring开发所需要的核心jar 1. libs目录下的核心jar包: 2. common-logging-xxx.jar 来自为知笔记(Wiz) 附件列表

  8. 【Spring开发】—— Spring Core

    原文:[Spring开发]-- Spring Core 前言 最近由于一些工作的需要,还有自己知识的匮乏再次翻开spring.正好整理了一下相关的知识,弥补了之前对spring的一些错误认知.这一次学 ...

  9. 使用OC开发phonegp 组件

    使用OC开发phonegp 组件 1. 使用oc 对phonegp中的组件近些开发,首先具体的pgonegp跟nativecode之间的一些优劣就不说了,开发phonegp 对应的组件主要就是使用na ...

随机推荐

  1. SDN Reading Notes

    网络操作编程语言:Frenetic QoS策略实施框架:PolicyCop    

  2. React的使用小规范----长期更新

    用this.state控制组件显示,用this.props控制页面业务数据,用this.other保存其他需要的属性,如计时器setInterval的id

  3. java读取HDFS压缩文件乱码

    java通过调用HDFS系统的FileSystem等API 直接读取HDFS的压缩文件会产生乱码 解决方法: 1.调用解码的API,解码后通过IO流处理. public static void mai ...

  4. Python面向对象 | isinstance和issubclass

    isinstance(a,b):判断a是否是b类(或者b类的基类)实例化的对象 class A: pass class B(A): pass obj = B() print(isinstance(ob ...

  5. luogu p2622关灯问题II

    luogu p2622关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[ ...

  6. 【JZOJ5740】【20190706】幻想世界

    题目 小 $\omega $ 想要进行烟火表演,她一开始有\(n\)颗彗星和\(n\)颗陨石 如果小 \(\omega\) 有\(i\)颗彗星而没有陨石,那么她会消耗\(i\)颗彗星并得到\(a_i\ ...

  7. 第02组Beta冲刺(4/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  8. [Noip2018]填数游戏

    传送门 Description 耳熟能详,就不多说了 Solution 对于一个不会推式子的蒟蒻,如何在考场优雅地通过此题 手玩样例,发现对于 \(n=1\) , \(ans=2^m\) .对于 \( ...

  9. 去除批次效应 sva

    Surrogate Variable Analysis http://www.bioconductor.org/packages/release/bioc/html/sva.html

  10. Redis内存回收策略

    如果使用Redis的时候,不合理使用内存,把什么东西都放在内存里面,又不设置过期时间,就会导致内存的堆积越来越大.根据28法则,除了20%的热点数据之外,剩余的80%的非热点或不怎么重要的数据都在占用 ...