⑦. 原生配置文件引入 ImportResource
- ①. 比如,公司使用bean.xml文件生成配置bean,然而你为了省事,想继续复用bean.xml,这个时候可以使用@ImportResource
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="hehe" class="com.xiaozhi.bean.User"> <property name="name" value="TANGZHI"></property> <property name="age" value="24"></property> </bean> <bean id="haha" class="com.xiaozhi.bean.Pet"> <property name="name" value="dog"></property> </bean> </beans>
@ImportResource("classpath:bean.xml")//比如,公司使用bean.xml文件生成配置bean,然而你为了省事,想继续复用bean.xml,@ImportResource粉墨登场。 public class MyConfig { }
//引入了importResource boolean hehe = run.containsBean("hehe"); System.out.println("容器中是否有hehe组件"+hehe);//true boolean haha = run.containsBean("haha"); System.out.println("容器中是否有haha组件"+haha);//true
⑧. 底层注解@ConfigurationProperties配置绑定
- ①. 方式一:@ConfigurationProperties + @Component
@Data @NoArgsConstructor @AllArgsConstructor /** * 注意: 只有在容器中的组件,才会拥有SpringBoot提供的强大功能 */ @Component @ConfigurationProperties(prefix = "mycar") public class Car { private String branch; private String price; }
# application.yaml server: port: 8888 mycar: branch: "雅阁" price: "20w"
@RestController public class myController { @Autowired Car car; @GetMapping("/car") public Car getMyCar(){ return car; } }
②. 方式二:@EnableConfigurationProperties + @ConfigurationProperties
/** * EnableConfigurationProperties做了两件事情 * (1). 开启Car配置绑定功能 * (2). 把这个Car这个组件自动注册到容器中 */ @EnableConfigurationProperties(Car.class) public class MyConfig {
@Data @NoArgsConstructor @AllArgsConstructor /** * 注意: 只有在容器中的组件,才会拥有SpringBoot提供的强大功能 */ //@Component @ConfigurationProperties(prefix = "mycar") public class Car { private String branch; private String price; }
③. 问题:如果出现如下提示,项目也可以运行
解决方案:如果要去掉上述的提示,则可以在 pom.xml 文件中添加如下依赖:
<dependency> <groupId> org.springframework.boot </groupId> <artifactId>spring-boot-configuration-processor</artifactId> <!--不传递依赖--> <optional>true</optional> </dependency>