SPRINGBOOT01_概述、入门案例、父项目依赖管理特性、@Configuration、@Import、@Conditional、@ConfigurationProperties配置绑定(四)

⑦. 原生配置文件引入 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;
    }
}


SPRINGBOOT01_概述、入门案例、父项目依赖管理特性、@Configuration、@Import、@Conditional、@ConfigurationProperties配置绑定(四)


②. 方式二:@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 文件中添加如下依赖:


SPRINGBOOT01_概述、入门案例、父项目依赖管理特性、@Configuration、@Import、@Conditional、@ConfigurationProperties配置绑定(四)


    <dependency>
        <groupId> org.springframework.boot </groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <!--不传递依赖-->
        <optional>true</optional>
    </dependency>



上一篇:Elasticsearch集群容器化部署


下一篇:某MP3爬虫