SpringBoot入门教程(十八)@value、@Import、@ImportResource、@PropertySource
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的配置属性
效果如下:
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"})
- @SpringBootApplication
- public class SpringBootConfigApplication {
- public static void main(String[] args) {
- SpringApplication.run(SpringBootConfigApplication.class, args);
- }
- }
v@PropertySource
自定义配置文件名称,多用于配置文件与实体属性映射。
- person.properties
- person.lastName=Jack
- person.age=18
- person.birth=2018/12/9
- person.boss=true
- person.maps.key1=value1
- person.maps.key2=value2
- person.lists=a,b,c
- person.dog.name=tom
- person.dog.age=1
- @PropertySource(value = {"classpath:person.properties"})
- @ConfigurationProperties(prefix = "person")
- @Component
- public class Person {
- private String lastName;
- private Integer age;
- private boolean isBoss;
- private Date birth;
- private Map<String, Object> maps;
- private List<Object> lists;
- private Dog dog;
- ...setter/getter/toString...
- }
这样一个注解(@PropertySource(value = {"classpath:person.properties"})
)就可以搞定不在主配置里读取,按照不同的功能模块划分出不同的配置文件。
v补充
@Bean注解用在方法上,作用:将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名。springboot不推崇使用配置文件,推崇使用全配置方式开发,如何定义一个配置类呢?在类名上加@Configuration标签标明这是一个配置类,方法上则用@Bean
v源码地址
https://github.com/toutouge/javademosecond/tree/master/hellospringboot
作 者:请叫我头头哥
出 处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
SpringBoot入门教程(十八)@value、@Import、@ImportResource、@PropertySource的更多相关文章
- SpringBoot入门教程(十九)@ControllerAdvice+@ExceptionHandler全局捕获Controller异常
在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有@Requ ...
- SpringBoot入门教程(十五)集成Druid
Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB ...
- SpringBoot入门教程(十四)导出Excel
用JavaPOI导出Excel时,我们会考虑到Excel版本及数据量的问题.针对不同的Excel版本,要采用不同的工具类.HSSFWorkbook:是操作Excel2003以前(包括2003)的版本, ...
- SpringBoot入门教程(十二)DevTools热部署
devtools模块,是为开发者服务的一个模块.主要的功能就是代码修改后一般在5秒之内就会自动重新加载至服务器,相当于restart成功.与JRebel不同的是,JRebel是一款商业插件,devto ...
- SpringBoot入门教程(十)应用监控Actuator
Actuator可能大家非常熟悉,它是springboot提供对应用自身监控,以及对应用系统配置查看等功能.spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来 ...
- SpringBoot入门教程(十六)@Autowired、@Inject、@Resource
@Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中.详情参见下表: v区别 ANNOTATION PACKAGE SOURCE 作用域 实现方 ...
- 34.无废话ExtJs 入门教程十八[树:TreePanel]
转自:https://www.cnblogs.com/iamlilinfeng/archive/2012/06/28/2566350.html 1. <!DOCTYPE html PUBLIC ...
- MyBatis基础入门《十八》动态SQL(if-where)
MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...
- RabbitMQ入门教程(十六):RabbitMQ与Spring集成
原文:RabbitMQ入门教程(十六):RabbitMQ与Spring集成 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
随机推荐
- 关于DataTable序列化的事儿
今天写了一个小demo,从数据库中读取到了dataTable,想序列化成json字符串,然后传到前端,进行页面展示,其实很简单的一个步骤,谁知道它出错了!!! 出错的原因是:序列化类型为XX的对象时检 ...
- JAVA基础复习与总结<十> Ruannable和Callable
程序运行原理 1.分时调度:所有线程轮流使用CPU的使用权,平均分配给每个线程占用CPU的时间. 2.抢占式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性 ...
- linux查看分区是否开启acl权限
1.为什么需要ACL权限 ACL的全称是 Access Control List (访问控制列表) .对于文件或者目录,都有相应的操作权限 r(read 读),w(write 写),x(execute ...
- Cordova打包vue项目生成Apk (解决cordova build android抛出的zip问题)
最近对vue前端框架情有独钟.但研究了一下怎么把vue项目打包成android apk来玩玩. 首先讲一下创建vue2.x项目.其实在之前的文章中都有写过,有兴趣的同学可以去看看.http://www ...
- Android Gradle Task-中文
任务可以从根项目运行 Android 任务 androidDependencies-显示项目的Android依赖项 signingReport-显示基础和测试模块的签名信息 sourceSets-打印 ...
- js的一些function
/** * * 根据秒数返回 一个日期范围 * timerFilter(10) */ function timerFilter(n) { let days = 31; // 一月多少天 const o ...
- Flutter 文本样式继承
使用inherit来设置是否继承样式 DefaultTextStyle( style: TextStyle(color: Colors.red, fontSize: 22), child: Colum ...
- CentOS 编译安装 Redis (实测 笔记 Centos 7.3 + redis 3.2.8)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- 32、可以拿来用的JavaScript实用功能代码
可以拿来用的JavaScript实用功能代码(可能会有些bug,用时稍微修改下,我用了几个还可以) 转载自 1.原生JavaScript实现字符串长度截取 function cutstr(str, l ...
- 30 ArcGIS 许可管理器常见问题(持续更新中……)
一.[单机版] 1.1.ArcMap 1.2.ArcGIS Pro 错误一 ArcGIS Pro单机许可安装授权,在Configure Authorization界面报“This functional ...