• 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) {无锡人流医院哪家好 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

      }

      }

  • 相关阅读:
    个性化联邦学习算法框架发布,赋能AI药物研发
    ES入门 (2) 数据格式/类型
    ES入门 (1) 使用基础(1)安装(1) WIN 单机
    Java 之 JDBC:(十)Spring的JDBCTemplate
    Java 之 JDBC:(九)Apache-DBUtils实现CRUD操作
    Java 之 JDBC:(八)数据库连接池
    Java 之 JDBC:(七)DAO及相关实现类
    Java 之 JDBC:(六)数据库事务
    Java 之 JDBC:(五)批量插入
    第七节:循环结构
  • 原文地址:https://www.cnblogs.com/djw12333/p/11497373.html
Copyright © 2020-2023  润新知