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. 使用面向对象思想封装js(附实例)

    平时在写js时应该用面向对象思想将每一组功能封装成一个模块,可实现模块间的高内聚低耦合.重用.结构清晰........... 如果页面中逻辑复杂.功能多,不使用模块封装是不可想象的,维护起来非常复杂. ...

  2. uniapp增加百度统计代码(h5)

    做了个微信公众号文章互相阅读的h5界面,http://mptask.wintp.top/(只能微信浏览器打开),其中用到了统计代码,记录如下. 1.新建 tj.html 界面 可放置在项目的根目录,文 ...

  3. [教程]Ubuntu16.04安装QQ,Tim,微信,百度网盘等

    [教程]Ubuntu16.04安装QQ,Tim,微信,百度网盘等 本文参考这篇blog step 1 先安装 deep-win环境. 戳这里下载压缩包 解压后在文件夹里打开终端,输入 sudo sh ...

  4. SDSC 2018 day2解题报告

    目录 10.12考试总结 T1 最近公共祖先 错误原因 T2 即时战略 T3 欧皇 10.12考试总结 T1 最近公共祖先 预估得分: 100 实际得分: 20 最大得分: 100 用时:1小时10分 ...

  5. day 18

    Only through experience of trial and suffering can the soul be strengthened, vision cleared, ambitio ...

  6. sparksql基础知识一

    目标 掌握sparksql底层原理 掌握sparksql中DataFrame和DataSet的数据结构和使用方式 掌握通过sparksql开发应用程序 要点 1.sparksql概述 1.1 spar ...

  7. nginx配置文件解释

    #全局配置 # For more information on configuration, see:# * Official English Documentation: http://nginx. ...

  8. 【VS开发】【C/C++开发】关于boost库的C++11导致的undefined符号问题

    undefined reference to boost::program_options::options_description::m_default_line_length 问题最终解决依靠的是 ...

  9. 连上Microbit板

    我们是在自己电脑上,用Mu编程,最终程序要烧录到Microbi板子的控制芯片中去,还记得这款芯片是哪家公司生产的?是多少位的?呵呵. 因此,我们要把板子和电脑连起来,用常见的一大一小的USB线就可以了 ...

  10. ES6高级技巧(二)

    Array.from const cities = [ { name: 'Milan', visited: 'no' }, { name: 'Palermo', visited: 'yes' }, { ...