SpringBoot自动配置实现流程详细分析
作者:4343 发布时间:2023-06-23 13:35:45
标签:SpringBoot,自动配置
第一种
给容器中的组件加上
@ConfigurationProperties注解即可
测试:
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
private Integer seatNum;
public Integer getSeatNum() {
return seatNum;
}
public void setSeatNum(Integer seatNum) {
this.seatNum = seatNum;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
", seatNum=" + seatNum +
'}';
}
public Car() {
}
}
在application.properties中属性:
mycar.seatNum = 4
mycar.brand = BMW
mycar.price = 100000
即可给之后new 的Car 对象自动配置。
运行:
public class MainApplication {
public static void main(String[] args) {
//返回springboot中的ioc容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
Car car = run.getBean("car", Car.class);
System.out.println(car);
}
}
控制台结果:
第二种
第一种的情况下是自己写的类作为组件,实现自动装配的过程;
但有时候使用第三方类的时候无法将其设置为自己的组件,所以就需要用
@EnableConfigurationProperties + @ConfigurationProperties
将Car类删除@Component注解,此时Car类已经不是组件了:
11 usages
@ConfigurationProperties(prefix = "mycar " )
public class Car {
3 usages
private String brand ;
3 usages
private Integer price ;
3 usages
此时,假设Car是第三方提供的类:
对于第三方的类 想要其作为组件就需要@Bean注解,就和之前的SSM项目中配置的bean
标签一样:
SSM中的配置文件中:
<bean id="car" class="xxx.xxx.xxx.Car">
<property name="brand" value=""/>
<property name="price" value=" "/>
<property name="seatNum" value=" "/>
</bean>
就等同于SpringBoot中配置类下的:
@Bean
public Car car(){
Car car = new Car();
return car;
}
其中属性的赋值就需要在Car类上增加
@ConfigurationProperties(prefix = "mycar")注解
最后在该配置类上使用
@EnableConfigurationProperties(Car.class)注解开启即可
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(Car.class)
public class CarAutoConfiguration {
@Bean
public Car car(){
Car car = new Car();
return car;
}
}
控制台显示结果一样:
来源:https://blog.csdn.net/weixin_42196338/article/details/128090652


猜你喜欢
- Java二维数组Java 语言中提供的数组是用来存储固定大小的同类型元素。1.二维数组初始化和声明数组变量的声明,和创建数组可以用一条语句完
- 关于MouseWheelListener的鼠标滚轮事件Java中JPanel面板中对鼠标滚轮事件的处理。一、MouseWheelListen
- finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常
- 本文实例分析了java遍历Map的几种方法。分享给大家供大家参考,具体如下:Java代码:Map<String,String>
- 介绍备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下,捕获并保存一个对象的内部状态,并在之后可
- 在android智能平板设备应用中,一项耗时的操作总要有个提示进度的框来提高用户的操作体验,操作进度提示框就显得很常用了。系统自带的有进度条
- 每个使用Android手机的人应该对Android中的通知不陌生,下面我们就学习一下怎么使用Android中的通知。一、通知的基本用法活动、
- 前言当我们通过前端向后端发起一个请求调用后端接口时,经常会遇到404的问题。网上关于对404问题介绍的一大堆,其实404问题的本质就两点。在
- 其实SynchronousQueue 是一个特别有意思的阻塞队列,就我个人理解来说,它很重要的特点就是没有容量。直接看一个例子:packag
- java使用HttpClient调用接口HttpClient 提供的主要的功能(1)实现了所有 HTTP 的方法(GET,POST,PUT,
- 异常与错误:异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通
- 概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的
- 1、添加依赖<dependency> <groupId>org.springframewo
- springboot aop里的@Pointcut()的配置@Pointcut("execution(public * com.w
- 1.新建一个项目2.给项目添加引用:Microsoft Excel 12.0 Object Library (2007版本)using Ex
- 沉浸式状态栏是Android4.4即api19以上才支持的特性,分两步实现:1.在布局文件中第一个控件(一般是imageview或者text
- 一、使用方式可以采用Transactional,配置propagation即可。打开org.springframework.transact
- 最近在开发中遇到了这样一个问题,在下拉刷新组件中包含了一个轮播图组件,当左右滑动的图片时很容易触发下拉刷新,如下图所示:如图中红色箭头所示方
- 我们在使用数据库进行查询时,很多时候会用到分页展示功能,因此除了像mybatis这样的完善的orm框架之外,还有pagehelper这样的插
- 本文实例为大家分享了C#实现飞行棋小游戏的具体代码,供大家参考,具体内容如下逻辑图 以下是掷色子的一个代码,比较有代表性,里面的逻