|
SpringBoot提供了设置注册生效条件的注解 @Conditional | 注解 | 说明 | @ConditionalOnProperty | 配置文件中存在对应的属性,才声明该bean | | @ConditionalOnMissingBean | 当不存在当前类型的bean时,才声明该bean | @ConditionalOnClass | 当前环境存在指定的这个类时,才声明该bean | 如果配置文件中配置了指定的信息,则注入,否则不注入
- package com.jinhei.config;
-
- import cn.itcast.pojo.Country;
- import cn.itcast.pojo.Province;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperties;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- public class CommonConfig {
- // 如果配置文件中配置了指定的信息,则注入,否则不注入
- @ConditionalOnProperty(prefix = "country",name = {"name","system"})
- @Bean //将方法返回值交给Ioc容器管理,成为Ioc容器的bean对象
- public Country country(@Value("${country.name}") String name,@Value("${country.system}") String system){
- Country country = new Country();
- country.setName(name);
- country.setSystem(system);
- return country;
- }
- @Bean// 对象默认名字为方法名
- //如果方法的内部需要使用到IOC容器中已经存在的Bean对象,那么只需要在方法上声明即可,spring会自动的注入
- public Province province(){
- return new Province();
- }
- }
复制代码
如果IOC容器中不存在Country对象,则创建Province对象,并注入到IOC容器中,否则不注入- package com.jinhei.config;
-
- import cn.itcast.pojo.Country;
- import cn.itcast.pojo.Province;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperties;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- public class CommonConfig {
- // 如果配置文件中配置了指定的信息,则注入,否则不注入
- @ConditionalOnProperty(prefix = "country",name = {"name","system"})
- @Bean //将方法返回值交给Ioc容器管理,成为Ioc容器的bean对象
- public Country country(@Value("${country.name}") String name,@Value("${country.system}") String system){
- Country country = new Country();
- country.setName(name);
- country.setSystem(system);
- return country;
- }
- // 如果IOC容器中不存在Country对象,则创建Province对象,并注入到IOC容器中,否则不注入
- @ConditionalOnMissingBean(Country.class)
- @Bean
- public Province province(){
- return new Province();
- }
- }
复制代码
//如果当前环境中存在DispatcherServlet类,则注入Province,否则不注入
// 如果当前引入了web起步依赖,则环境中有DispatcherServlet,否则没有有以下依赖则注入:- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
复制代码
demo4.zip
(29.32 KB, 下载次数: 0, 售价: 50 金币)
|