博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot入门教程(十八)@value、@Import、@ImportResource、@PropertySource
阅读量:4603 次
发布时间:2019-06-09

本文共 2860 字,大约阅读时间需要 9 分钟。

Spring Boot提倡基于Java的配置。这两篇博文主要介绍springboot 一些常用的注解介绍

v@value

通过@Value可以将外部的值动态注入到Bean中。

添加application.properties的属性,方便后面演示。

domain.name=cnblogs
@Value("字符串1")    private String testName; // 注入普通字符串    @Value("#{systemProperties['os.name']}")    private String systemPropertiesName; // 注入操作系统属性    @Value("#{ T(java.lang.Math).random() * 100.0 }")    private double randomNumber; //注入表达式结果    @Value("${domain.name}")    private String domainName; // 注入application.properties的配置属性

效果如下:

SpringBoot入门教程(十八)@value、@Import、@ImportResource、@PropertySource

v@Import

SpringBoot 的 @Import 用于将指定的类实例注入之Spring IOC Container中。

package com.cnblogs.demo;public class Dog { }
package com.cnblogs.demo; public class Cat { }

在启动类中需要获取Dog和Cat对应的bean,需要用注解@Import注解把Dog和Cat的bean注入到当前容器中。

package com.cnblogs.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Import; //@SpringBootApplication@ComponentScan/*把用到的资源导入到当前容器中*/@Import({Dog.class, Cat.class})public class App {     public static void main(String[] args) throws Exception {         ConfigurableApplicationContext context = SpringApplication.run(App.class, args);        System.out.println(context.getBean(Dog.class));        System.out.println(context.getBean(Cat.class));        context.close();    }}

v@ImportResource

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上.

@ImportResource(locations = {"classpath:applicationContext.xml"})@SpringBootApplicationpublic class SpringBootConfigApplication {    public static void main(String[] args) {        SpringApplication.run(SpringBootConfigApplication.class, args);    }}

v@PropertySource

自定义配置文件名称,多用于配置文件与实体属性映射。

person.propertiesperson.lastName=Jackperson.age=18person.birth=2018/12/9person.boss=trueperson.maps.key1=value1person.maps.key2=value2person.lists=a,b,cperson.dog.name=tomperson.dog.age=1
@PropertySource(value = {"classpath:person.properties"})@ConfigurationProperties(prefix = "person")@Componentpublic class Person {    private String lastName;    private Integer age;    private boolean isBoss;    private Date birth;    private Map
maps; private List
lists; private Dog dog; ...setter/getter/toString...}

这样一个注解(@PropertySource(value = {"classpath:person.properties"}))就可以搞定不在主配置里读取,按照不同的功能模块划分出不同的配置文件。

v补充

@Bean注解用在方法上,作用:将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名。springboot不推崇使用配置文件,推崇使用全配置方式开发,如何定义一个配置类呢?在类名上加@Configuration标签标明这是一个配置类,方法上则用@Bean

作  者:
出  处:
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

转载于:https://www.cnblogs.com/toutou/p/9907753.html

你可能感兴趣的文章
第十五节:垃圾回收模式
查看>>
织梦自动增加数值标签
查看>>
DPDK初始化
查看>>
iOS消息推送代码(iOS不断更新,稍微有点过时了)
查看>>
DP---最长上升/下降子序列
查看>>
MySQL性能诊断分析
查看>>
python list用法
查看>>
Linux系统磁盘管理
查看>>
1037 在霍格沃茨找零钱 (20 分)
查看>>
记一次header跨域与cookie共享
查看>>
根据屏幕高度自适应元素高度
查看>>
jQuery CSS 操作函数
查看>>
java配置环境变量
查看>>
TexturePacker 命令行用例
查看>>
list-style-type:decimal在IE中显示全是1的解析
查看>>
js保留整数
查看>>
.Net托管世界的应用程序域和线程-网摘
查看>>
大规模web服务读书笔记
查看>>
bzoj1112 [POI2008]砖块Klo
查看>>
解决form提交时又弹出页面的问题
查看>>