温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Spring怎么对组件进行赋值

发布时间:2021-04-17 17:58:33 来源:亿速云 阅读:146 作者:Leah 栏目:编程语言

使用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
  }

}

看完上述内容,你们掌握使用Spring怎么对组件进行赋值的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI