1.背景
springboot框架是一个自动化配置框架,当自动化配置满足不了程序的需求时,我们就需要配置自己特殊的参数,例如配置服务启动的端口,或者我们自定义一些组件时,需要初始化时,就可以将数据定义在配置文件中,然后通过spring框架将配置文件中的数据注入到组件中。
2.方式一
- 定义组件添加@Component注解和@ConfigurationProperties(prefix = "mycar")
@Component @ConfigurationProperties(prefix = "mycar") public class Car { private String brand; private double price; }
- 在application.properties配置文件中配置对于前缀的数据
mycar.brand=BWM mycar.price=88888
- @ConfigurationProperties注解的作用:在配置文件中根据前缀获取相应的值,注入到属性中,但是要想注入成功必须将该组件加入到容器中,因为在springboot中要想实现自动配置的效果,就必须将组件添加到容器中。
3.方式二
- 依旧将@ConfigurationProperties注解设置前缀,这个时候不需要将组件加到ioc容器中
@ConfigurationProperties(prefix = "mycar") public class Car { private String brand; private double price; }
- 在任意一个配置类中使用@EnableConfigurationProperties注解,且在将组件的类型作为参数送进去,该注解的参数是一个数组,我们可以传多个组件进行自动配置,且将这些组件加入到ioc容器中。
@SpringBootApplication @EnableConfigurationProperties({Car.class}) public class Springdemo11Application { public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(Springdemo11Application.class, args); Object car = run.getBean("car"); System.out.println(car.toString()); } }