重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Spring中怎么实现组件赋值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联建站于2013年创立,是专业互联网技术服务公司,拥有项目网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元阳信做网站,已为上家服务,为阳信各地企业和个人服务,联系电话:18982081108
1. @Value & @PropertySource
1.1 使用方式
@PropertySource:读取外部配置文件中的 k/v 保存到运行的环境变量中;加载完外部的配置文件以后使用 ${} 取出配置文件的值
@Value:赋值
基本数值 可以写 SpEL,#{} 可以写 ${};取出配置文件【properties】中的值(在运行环境变量里面的值)
1.2 代码
1. Person
@Data@Slf4j@ToStringpublic 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@AllArgsConstructorpublic class Message { private String label = null;}
2. SpringConfig
@Configurationpublic 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中怎么实现组件赋值问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。