记录探索疑问--@Import和@Autowired用在没有放入到容器的类上

1.@Import用在没有放入到容器的类上

要导入的类

public class ImportB {
    public void hello(){
        System.out.println("world");
    }
}

没有放入到容器的类

@Import({ImportB.class})
public class ImportA {
}

测试代码

	@Autowired
	ImportB b;
	
	@Test
	public void contextLoads() {
		b.hello();
	}

结果:不能导入ImportB类

2.@Autowired用在没有放入到容器的类中

导入容器的类

@Component
public class ImportB {
    public void hello(){
        System.out.println("world");
    }
}

没有放入到容器的类

public class ImportA {
    @Autowired
    ImportB importB;
    public void test(){
        importB.hello();
    }
}

测试代码

	@Test
	public void contextLoads() {
		ImportA importA = new ImportA();
		importA.test();
	}

结果:ImportB类没有注入到ImportA中

3.@Import用在没有放入到容器的类上,子类放入了容器

需要导入的类

public class ImportB {
    public void hello(){
        System.out.println("world");
    }
}

没有放入到容器中的类

@Import({ImportB.class})
public class ImportA {

}

放入到容器中的子类

@Component
public class ImportC extends ImportA{
    @Autowired
    ImportB importB;
    public void test(){
        importB.hello();
    }
}

测试代码

	@Autowired
	ImportC c;

	@Test
	public void contextLoads() {
		c.test();
	}

结果:能导入ImportB类

思考:看见了没有放入容器的类上有@Import,估计是子类放入了容器。看见了没有放入容器中的类里面有@Autowired,估计是忘了把类放入容器,而且这样用也不对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值