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

本文共 2810 字,大约阅读时间需要 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

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

你可能感兴趣的文章
(翻译)Quartz官方教程——第十课:配置,资源使用和SchedulerFactory
查看>>
cobbler无人值守安装CentOS7
查看>>
0-1背包问题理解
查看>>
人眼定位识别
查看>>
自执行函数 闭包
查看>>
[置顶] 我的 Java 后端书架 (2016 年暖冬版)
查看>>
centos7在命令行下安装图形界面
查看>>
Sql 先进先出计算积分
查看>>
OpenCV(iOS)平滑处理(模糊,毛玻璃)(10)
查看>>
1 Java NIO概述-翻译
查看>>
《你必须知道的.NET》读后小结(4)
查看>>
Android 应用内存管理-onTrimMemory,onLowMemory
查看>>
AST语法结构树初学者完整教程
查看>>
【LibreOJ】#6354. 「CodePlus 2018 4 月赛」最短路 异或优化建图+Dijkstra
查看>>
Python---RabbitMQ的使用
查看>>
iOS下JS与OC互相调用(七)--Cordova 基础
查看>>
lc257. Binary Tree Paths
查看>>
Spring Boot 监控利器 —— Actutor
查看>>
Spring Boot 2.x整合Activiti工作流以及模型设计器(前后端分离 iview admin vue 集成activiti工作流 模型设计器 动态...
查看>>
SharePoint poweshell 无法识别命令
查看>>