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

网友投稿 302 2022-12-27


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

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java的三种随机数生成方式的实现方法
下一篇:性能接口测试工具(api性能测试工具)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~