使用 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介绍 五. ...
随机推荐
- 2016 博客导读总结 & 个人感悟
此文着笔之时.2017已经在眼前了.预计等我写完,2017已经到了. 二次编辑于2017年1月1日早11点. 关于2016的感悟.十二月初就想写,当时认为是有点太早了,只是却思绪如泉涌. 且那时候才刚 ...
- hibernate的入门crud
package com.test; import com.demo.User; import org.hibernate.HibernateException; import org.hibernat ...
- pip安装psutil模块时候报错:yum install python-devel mysql-devel zlib-devel openssl-devel
yum install python-devel mysql-devel zlib-devel openssl-devel [root@localhost software]# pip install ...
- 《简明Python教程》读书笔记
1:help 需要获取Python中任何函数.类型的信息,使用 help('内容') 命令查看帮助,按 q 退出帮助. 2:格式化字符串 format 方法是数据格式化的重要方法. 字符串 ...
- 【Linux】ssh建立隧道tunnel连接到内网设备
root@192.168.1.105 建立隧道: ssh -l root -N -f -R 9103:127.0.0.1:2222 work@11.11.13.17 解析:把本地127.0.0.1:2 ...
- 【Linux】find命令
用途 find命令用于在指定目录下查找文件. 全称 无 参数 -name :后跟需要匹配的文件名模式,需要使用引号引起来 下面是一些简单的示例查找:(~表示$HOME目录) 1.查找当前$HOME下' ...
- [JavaScript模块演化简史]摘要
来源于:https://zhuanlan.zhihu.com/p/26231889 # JavaScript 模块化 早期的JavaScript并没有模块化解决方案.随着单页应用与富客户端的流行,出现 ...
- Emacs的sr-speedbar中使能Go-mode
sr-speedbar使用了speedbar的文件检索功能,但是Emacs24自带的speedbar不支持go文件预览,下面是在speedbar中使能go-mode的一种方法: 1,按F10启动菜单栏 ...
- IOS的动态性
IOS的动态性主要来自以下方面的特性:动态类型,动态绑定,动态载入,SEL类型. 1.IOS的动态类型:(强类型)id可以在代码运行时判断对象的类型.使用id类型(又称强类型)可以在运行的时候使用任何 ...
- springAOP记录用户操作日志
项目已经开发完成,需要加用户操作日志,如果返回去加也不太现实,所以使用springAOP来完成比较合适. 注解工具类: @Retention(RetentionPolicy.RUNTIME) @Tar ...