Day4-@import+@Conditional

@import常用于写在config文件,写于开头,全局声明,然后所在目录下均能导入

写在方法中间不可用,爆红

@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = true)
public class Myconfig {
    @Bean
    public User User_component01(){
        User zhangsan=new User("zhangsan",22);
        zhangsan.setPet(tomcat02());
        return zhangsan;
    }
    @Bean
    public Pet Cat_component01(){

        return new Pet("tomcat");
    }
    @Bean("tom")
    public Pet tomcat02(){
        return new Pet("tom");
    }
}

这是配置信息

主程序加上这几句可以看看效果

         String []demonames=run.getBeanNamesForType(User.class);
        for (String name:demonames
             ) {
            System.out.println(name);
        }
        //看看import效果

        DBHelper Dbhelper=run.getBean(DBHelper.class);
        System.out.println(Dbhelper);

运行结果

------------------
User_component01
com.pianxian1.bean.User
ch.qos.logback.classic.db.DBHelper@2c30b71f

可以看出分别取自bean包下,Myconfig包下的@bean声明下新组件,以及同一文件下别的地方装的包下的任意类(外部库随便找的)组件

 检验

@ConditionalOnBean(name="tom")

在配置文件开头,即单个容器中包含“tom”才让配置文件里的@Bean存在

主程序代码

        Boolean bean1=run.containsBean("tom");
        System.out.println("tom存在"+bean1);

        Boolean bean2=run.containsBean("User_component01");
        System.out.println("User01存在"+bean2);

配置文件

@Configuration(proxyBeanMethods = true)
//@ConditionalOnMissingBean(name="tom")
@ConditionalOnBean(name="tom")
public class Myconfig {
    @Bean
    public User User_component01(){
        User zhangsan=new User("zhangsan",22);
        zhangsan.setPet(tomcat02());
        return zhangsan;
    }
    @Bean
    public Pet Cat_component01(){

        return new Pet("tomcat");
    }
    //@Bean("tom")//tomcat02
    public Pet tomcat02(){
        return new Pet("tom");
    }
}

注意2020版本会输出false

2024IDEA会直接爆红,说User01这个容器找不到(因为不满足@conditionOnBean这个注解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值