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

v@value

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

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

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

效果如下:

v@Import

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

  1. package com.cnblogs.demo;
  2. public class Dog {
  3.  
  4. }
  1. package com.cnblogs.demo;
  2.  
  3. public class Cat {
  4.  
  5. }

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

  1. package com.cnblogs.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.ConfigurableApplicationContext;
  5. import org.springframework.context.annotation.ComponentScan;
  6. import org.springframework.context.annotation.Import;
  7.  
  8. //@SpringBootApplication
  9. @ComponentScan
  10. /*把用到的资源导入到当前容器中*/
  11. @Import({Dog.class, Cat.class})
  12. public class App {
  13.  
  14. public static void main(String[] args) throws Exception {
  15.  
  16. ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
  17. System.out.println(context.getBean(Dog.class));
  18. System.out.println(context.getBean(Cat.class));
  19. context.close();
  20. }
  21. }

v@ImportResource

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

  1. @ImportResource(locations = {"classpath:applicationContext.xml"})
  2. @SpringBootApplication
  3. public class SpringBootConfigApplication {
  4.  
  5. public static void main(String[] args) {
  6. SpringApplication.run(SpringBootConfigApplication.class, args);
  7. }
  8. }

v@PropertySource

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

  1. person.properties
  2.  
  3. person.lastName=Jack
  4. person.age=18
  5. person.birth=2018/12/9
  6. person.boss=true
  7. person.maps.key1=value1
  8. person.maps.key2=value2
  9. person.lists=a,b,c
  10. person.dog.name=tom
  11. person.dog.age=1
  1. @PropertySource(value = {"classpath:person.properties"})
  2. @ConfigurationProperties(prefix = "person")
  3. @Component
  4. public class Person {
  5. private String lastName;
  6. private Integer age;
  7. private boolean isBoss;
  8. private Date birth;
  9.  
  10. private Map<String, Object> maps;
  11. private List<Object> lists;
  12. private Dog dog;
  13. ...setter/getter/toString...
  14. }

这样一个注解(@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的更多相关文章

  1. SpringBoot入门教程(十九)@ControllerAdvice+@ExceptionHandler全局捕获Controller异常

    在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有@Requ ...

  2. SpringBoot入门教程(十五)集成Druid

    Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB ...

  3. SpringBoot入门教程(十四)导出Excel

    用JavaPOI导出Excel时,我们会考虑到Excel版本及数据量的问题.针对不同的Excel版本,要采用不同的工具类.HSSFWorkbook:是操作Excel2003以前(包括2003)的版本, ...

  4. SpringBoot入门教程(十二)DevTools热部署

    devtools模块,是为开发者服务的一个模块.主要的功能就是代码修改后一般在5秒之内就会自动重新加载至服务器,相当于restart成功.与JRebel不同的是,JRebel是一款商业插件,devto ...

  5. SpringBoot入门教程(十)应用监控Actuator

    Actuator可能大家非常熟悉,它是springboot提供对应用自身监控,以及对应用系统配置查看等功能.spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来 ...

  6. SpringBoot入门教程(十六)@Autowired、@Inject、@Resource

    @Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中.详情参见下表: v区别 ANNOTATION PACKAGE SOURCE 作用域 实现方 ...

  7. 34.无废话ExtJs 入门教程十八[树:TreePanel]

    转自:https://www.cnblogs.com/iamlilinfeng/archive/2012/06/28/2566350.html 1. <!DOCTYPE html PUBLIC ...

  8. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  9. RabbitMQ入门教程(十六):RabbitMQ与Spring集成

    原文:RabbitMQ入门教程(十六):RabbitMQ与Spring集成 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

随机推荐

  1. 关于DataTable序列化的事儿

    今天写了一个小demo,从数据库中读取到了dataTable,想序列化成json字符串,然后传到前端,进行页面展示,其实很简单的一个步骤,谁知道它出错了!!! 出错的原因是:序列化类型为XX的对象时检 ...

  2. JAVA基础复习与总结<十> Ruannable和Callable

    程序运行原理  1.分时调度:所有线程轮流使用CPU的使用权,平均分配给每个线程占用CPU的时间. 2.抢占式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性 ...

  3. linux查看分区是否开启acl权限

    1.为什么需要ACL权限 ACL的全称是 Access Control List (访问控制列表) .对于文件或者目录,都有相应的操作权限 r(read 读),w(write 写),x(execute ...

  4. Cordova打包vue项目生成Apk (解决cordova build android抛出的zip问题)

    最近对vue前端框架情有独钟.但研究了一下怎么把vue项目打包成android apk来玩玩. 首先讲一下创建vue2.x项目.其实在之前的文章中都有写过,有兴趣的同学可以去看看.http://www ...

  5. Android Gradle Task-中文

    任务可以从根项目运行 Android 任务 androidDependencies-显示项目的Android依赖项 signingReport-显示基础和测试模块的签名信息 sourceSets-打印 ...

  6. js的一些function

    /** * * 根据秒数返回 一个日期范围 * timerFilter(10) */ function timerFilter(n) { let days = 31; // 一月多少天 const o ...

  7. Flutter 文本样式继承

    使用inherit来设置是否继承样式 DefaultTextStyle( style: TextStyle(color: Colors.red, fontSize: 22), child: Colum ...

  8. 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 显示系统版 ...

  9. 32、可以拿来用的JavaScript实用功能代码

    可以拿来用的JavaScript实用功能代码(可能会有些bug,用时稍微修改下,我用了几个还可以) 转载自 1.原生JavaScript实现字符串长度截取 function cutstr(str, l ...

  10. 30 ArcGIS 许可管理器常见问题(持续更新中……)

    一.[单机版] 1.1.ArcMap 1.2.ArcGIS Pro 错误一 ArcGIS Pro单机许可安装授权,在Configure Authorization界面报“This functional ...