栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring @ConditionalOnBean注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring @ConditionalOnBean注解

@ConditionalOnBean作用:放在 @Bean 注解上,如果@ConditionalOnBean注解参数中指定的bean存在,就实例化当前作用的Bean

#	当给定的在bean存在时,则实例化当前Bean
@ConditionalOnBean         
#	当给定的在bean不存在时,则实例化当前Bean
@ConditionalOnMissingBean  
#	当给定的类名在类路径上存在,则实例化当前Bean
@ConditionalOnClass        
#	当给定的类名在类路径上不存在,则实例化当前Bean
@ConditionalOnMissingClass 
1、City类
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class City {
    private String cityName;
    private Integer citySize;
}
2、User类
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private Integer age;
    private City city;
}
3、配置类
@Configuration
public class ConditionalConfig {

//    @Bean
//    public City city(){
//        City city = new City();
//        city.setCityName("beijing");
//        return city;
//    }

	//当city的bean存在时,才会将user注入到spring中,否则报null
    @ConditionalOnBean(name = "city")
    @Bean
    public User user(){
        City city = new City();
        city.setCityName("shanghai");
        city.setCitySize(20);
        return new User("zhangsan",2,city);
    }
}
4、测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class ConditionalOnDemo {

    @Autowired(required = false)
    User user;

    @Test
    public void run(){
        System.out.println("user is:"+user);
    }

}

当Spring没有注入City的bean时,就会报空

user is:null

当Spring注入City的bean时,就会正常执行,将user的bean注入到spring容器中

user is:User(name=zhangsan, age=2, city=City(cityName=beijing, citySize=20))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号