当前位置: 首页 > 编程笔记 >

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

葛意远
2023-03-14
本文向大家介绍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:设置虚拟机html" target="_blank">参数 -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
  }

}

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

 类似资料:
  • 本文向大家介绍php给数组赋值的实例方法,包括了php给数组赋值的实例方法的使用技巧和注意事项,需要的朋友参考一下 数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西。 如果你去某个酒店住店,服务员会告诉你房间号是多少,具体房间里有存储了什么,那就需要根据房间号进到房间里才知道了。 PHP有两种数组:索引数组、关联数组。索引和关联两个词都是针对数组的键而言的。 P

  • 本文向大家介绍JS实现DIV容器赋值的方法,包括了JS实现DIV容器赋值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现DIV容器赋值的方法。分享给大家供大家参考,具体如下: 给某个DIV容器赋值js函数,ajax中使用,支持ie和firefox 其中 id为div的id content:为内容 调用例子: 希望本文所述对大家JavaScript程序设计有所帮助。

  • 本文向大家介绍JSP 开发之Spring BeanUtils组件使用,包括了JSP 开发之Spring BeanUtils组件使用的使用技巧和注意事项,需要的朋友参考一下 JSP 开发之Spring BeanUtils组件使用 用于演示的javabean 测试(所有测试只与源javabean属性值有关,与目标javabean属性值无关) 当源javabean属性均有值时的目标javabean属性复

  • 本文向大家介绍jquery对所有input type=text的控件赋值实现方法,包括了jquery对所有input type=text的控件赋值实现方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇jquery对所有input type=text的控件赋值实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Vue组件化开发之通用型弹出框的实现,包括了Vue组件化开发之通用型弹出框的实现的使用技巧和注意事项,需要的朋友参考一下 本文主要分享关于组件化开发的理解,让刚入门的小伙伴少走一些弯路,提高开发效率,作者本人也是新手,如有不当之处,请大佬指出,感谢。 相信很多刚入门的小伙伴,经常会写很多重复的代码,而这些代码一般情况下也都是大同小异,在这种情况下,如何让开发和学习变得更加高效,组件化

  • 本文向大家介绍javascript实现连续赋值,包括了javascript实现连续赋值的使用技巧和注意事项,需要的朋友参考一下 最近项目接触,时间比较充足,到网上逛逛了逛无意中在网上发现了这个问题,预知的结果和真实结果相差太大。 请看下面代码 如果把代码拆开来看,结果就是我们所想的那样 分析代码: a.x=a={n:2} js的赋值运算是右结合的,上面等同于a.x=(a={n:2}) js的求值运