在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 的方式的更多相关文章

  1. 04_IOC容器装配Bean(xml方式)

    IOC容器装配Bean(xml方式) 1.Spring 提供配置Bean三种实例化方式 1)使用类构造器实例化(默认无参数) <bean id="bean1" class=& ...

  2. 05_IOC容器装配Bean(注解方式)

    IOC容器装配Bean(注解方式) 1.使用注解方式进行Bean注册 xml 方式: <bean id="" class=""> spring2.5 ...

  3. Spring框架(3)---IOC装配Bean(注解方式)

    IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...

  4. spring IOC装配Bean(注解方式)

    1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...

  5. Spring加载Properties配置文件的三种方式

    一.通过 context:property-placeholder 标签实现配置文件加载 1) 用法: 1.在spring.xml配置文件中添加标签 <context:property-plac ...

  6. Spring 框架 详解 (四)------IOC装配Bean(注解方式)

    Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component  描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注 ...

  7. Java 读取 .properties 配置文件的几种方式

    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...

  8. Java 读取properties 配置文件的几种方式

    基于ClassLoder读取配置文件 Properties properties = new Properties(); // 使用ClassLoader加载properties配置文件生成对应的输入 ...

  9. Spring容器、BeanFactory和ApplicationContext,及3种装配Bean的方式

    目录 一. spring容器理解 二. BeanFactory和ApplicationContext之间的关系 三. BeanFactory详情介绍 四.ApplicationContext介绍 五. ...

随机推荐

  1. Win10下安装Ubuntu16.04虚拟机并搭建TensorFlow1.3环境

    本文具体参考资料链接 1.VMware下载安装 百度输入VMware搜索,出现如下界面,点击下载: 此处安装步骤可以网上搜索,也可不用搜索,直接按照按照提示一步一步确认即可完成. 2.Ubuntu16 ...

  2. nginx内置预定义变量

    nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量.其中,部分预定义的变量的值是可以改变的. $arg_PARAMETER 这个变量值为:GET请求中变量名PARAMETER参数 ...

  3. Flash 加密和破解

    关于Flash(swf),我们需要明确一点: ***Flash字节码的意义都是公开的 所以如果cracker真的有足够的耐心他最终还是可以破解掉你的Flash.我们能做的只是尽量提高Flash被破解的 ...

  4. 从头開始学 RecyclerView(三) 封装简化

    前言 上一篇的代码,也是基于这些封装的. RV的封装,跟曾经的listView之类的封装,大同小异. 这里,从@devwiki 处,将代码搬过来.基本无改动 BaseHolder的优化 使ViewHo ...

  5. java 获取文件后缀名(文件类型)

      java 获取文件后缀名(文件类型) CreateTime--2018年5月23日09:16:31 Author:Marydon // 获取文件名的后缀名(文件类型) String oldFile ...

  6. ftp相关常用命令

     工欲善其事必先利其器 00.FTP常用命令 01.SFTP命令 sftp  user@ip:/tmp

  7. 【laravel5.*】详解laravel中的依赖注入

    1.下面这个是自定义的类,钉钉扫码登录web 网页授权OAuth2.0,是一个典型的依赖注入参考示例:

  8. 比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket

    2009-06-23 Java Web层框架--JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket他们各自的优点和缺点: JSF 优点: ◆Java EE标 ...

  9. Swift打印Debug日志,实现Release下不打印

    OC内,我们往往做log打印时,会考虑一个Debug环境下打印,Release下控制不打印,以节约性能消耗. OC我们可以这样做: 在pch文件内,定义如下: //打印日志 #ifdef DEBUG ...

  10. spring 2种下载方式 下载地址 download 地址

    spring 在官网只提供 maven 的下载方式,把zip方式的不再提供,两种方法下载: 1.想找回以前版本的spring zip包,如果知道版本号,那么直接在google里输入 ” spring ...