使用 properties 配置文件装配 bean 的方式
在spring中将bean 注册到spring 容器中常见的有三种方式(两类):
先说明配置文件内容:application.yml,有一段配置如下
persons:
youtube:
name: youtube
age:
google:
name: google
age:
第一类:将单个类注册到容器中
第一种,使用 @ConfigurationProperties + @Component,配置 GoogleUser
@Configuration //效果等同于 @Component
@ConfigurationProperties(prefix="persons.google") // 表示使用配置文件中前缀为 persons.google 的属性的值初始化该bean定义产生的的bean实例的同名属性,例如会将name 初始化为 "google"
@Data
public class GoogleUser{
private String name;
private Integer age;
}
第二种,使用 @Value
@Configuration
@Data
public class GoogleUser{
@Value("${persons.google.name}") //将配置文件中 persons.google.name 属性值注入进来
private String name;
@Value("${persons.google.age}")
private Integer age;
}
第二类,@ConfigurationProperties + @Bean注解在配置类的bean定义方法上
首先需要定义一个普通类,属性有 name、age。Person
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Person {
private String name;
private Integer age;
}
在配置类中将一个方法定义为一个 bean
@Configuration
public class PropertyConf { @Bean(name="youtubeUser")
@ConfigurationProperties(prefix="persons.youtube")
public Person youtubeUser() {
return new Person();
} }
至此配置完成了,可以写写controller 验证一下了
@RestController
public class WelcomeController { @Autowired
private GoogleUser p; @Autowired
@Qualifier("youtubeUser")
private Person youtubeUser; @RequestMapping(value="/hello", method=RequestMethod.GET)
public String hello() {
return "hello world";
} @RequestMapping(value="/hi/{name}", method=RequestMethod.GET)
public String hi(@PathVariable String name) {
System.out.println("user name is:" + name);
return "hi "+name;
} @RequestMapping(value="/person/google", method=RequestMethod.GET)
public Person getGoogle() {
System.out.println(p);
Person result = Person.builder().name(p.getName()).age(p.getAge()).build();
return result;
} @RequestMapping(value="/person/youtube", method=RequestMethod.GET)
public Person getYoutube() {
System.out.println(youtubeUser);
return youtubeUser;
} }
使用 postman 等工具可以测一下了


使用 properties 配置文件装配 bean 的方式的更多相关文章
- 04_IOC容器装配Bean(xml方式)
IOC容器装配Bean(xml方式) 1.Spring 提供配置Bean三种实例化方式 1)使用类构造器实例化(默认无参数) <bean id="bean1" class=& ...
- 05_IOC容器装配Bean(注解方式)
IOC容器装配Bean(注解方式) 1.使用注解方式进行Bean注册 xml 方式: <bean id="" class=""> spring2.5 ...
- Spring框架(3)---IOC装配Bean(注解方式)
IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...
- spring IOC装配Bean(注解方式)
1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...
- Spring加载Properties配置文件的三种方式
一.通过 context:property-placeholder 标签实现配置文件加载 1) 用法: 1.在spring.xml配置文件中添加标签 <context:property-plac ...
- Spring 框架 详解 (四)------IOC装配Bean(注解方式)
Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注 ...
- Java 读取 .properties 配置文件的几种方式
Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...
- Java 读取properties 配置文件的几种方式
基于ClassLoder读取配置文件 Properties properties = new Properties(); // 使用ClassLoader加载properties配置文件生成对应的输入 ...
- Spring容器、BeanFactory和ApplicationContext,及3种装配Bean的方式
目录 一. spring容器理解 二. BeanFactory和ApplicationContext之间的关系 三. BeanFactory详情介绍 四.ApplicationContext介绍 五. ...
随机推荐
- android形状drawable
1.在res目录下新建drawable目录. 2.新建一个xml文件. 3.採用drawable来定义资源. <? xml version="1.0" encoding=&q ...
- Atlas系列一:【已解决】error while loading shared libraries: libcrypto.so.6: cannot open shared object file: No such file or directory
1:Atlas的安装 https://github.com/Qihoo360/Atlas/wiki/Atlas的安装 2: [root@localhost bin]# ./mysql-proxyd t ...
- hdu 3308 LCIS(线段树区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=3308 LCIS Time Limit: 6000/2000 MS (Java/Others) ...
- ld链接器的工作原理及链接顺序(转)
基礎知識 GNU ld 最基本的連結單位是 object 檔,即單一個編譯單元所對應的編譯結果,通常副檔名是 .o.在 object 檔所維護的資訊當中,連結器主要關注的是: 輸出符號: 這是定義在 ...
- mtr网络连通性测试
01.mtr命令 yum install -y mtr [root@jiao ~]# mtr --helpusage: mtr [-hvrwctglspniu46] [--help] [--ver ...
- Ubuntu16.04 安装使用KiCad
KiCad是一个带模拟器的电路设计软件, 官网 http://kicad-pcb.org/, 当前版本是4.0.7 安装 参考http://kicad-pcb.org/download/ubuntu/ ...
- Asp.Net通过ODBC连接Oracle数据库
本来有个项目是通过安装Oracle client然后让asp.net引用System.Data.OracleClient来访问Oracle数据库的,但是不知道为什么老是报:ORA-12170:连接超时 ...
- FlipViewDemo
error: Resource entry white is already defined. error: Resource entry transparentBlack is already de ...
- 多线程场景下如何使用 ArrayList
ArrayList 不是线程安全的,这点很多人都知道,但是线程不安全的原因及表现,怎么在多线程情况下使用ArrayList,可能不是很清楚,这里总结一下. 1. 源码分析 查看 ArrayList 的 ...
- Swift中的map 和 flatMap 原理及用法
之前对这两个概念有点糊,今天正好遇到一个相关需求,才深入了解了下. 需求如下: 大概就是对一个数组的model,重构成一个新model,返回得到一个新数组 用map很容易实现,不过后来我需要对其中进行 ...