spring学习1.2自动装配Bean - 强化

如何给bean自定义ID

spring应用上下文中所有的bean都会被给定一个id
如下面这个

@Component
public class Dog implements IAnimals {
    public void say() {
        System.out.println("wang....");
    }
}

spring会自动根据其类名指定id,一般是将类名的第一个字母变为小写
如上述的例子中:bean的id为 dog
但当我们需要设置不同的类名id时,只需要像这样做:

@Component("DOGcomponent")

在@Component后加个括号加你自定义的id名就可以了

如何扫描不同的包

在上一节spring学习(1)装配Bean-初步接触中我们发现只用componentScan只能扫描一个包,那么我们该如何扫描多个包或者其他包呢?
我们可以这么做:

@Configuration
@ComponentScan (basePackageClasses = {Dog.class,Cat.class})
public class AnimalsConfig {
}

它会扫描上面给出class所在的包的所有包含@Component注解的类
注意:这里还有一种方法:
@ComponentScan (basePackages = {"包名1","包名2"})
但是由于这里的包名是string类型,可能会出现类型不安全,出现一些奇怪的异常,所以不推荐使用

关于@Autowired 注解

@Autowired(required = false)
当不能确定 Spring 容器中一定拥有某个类的 Bean 时,可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false),这等于告诉 Spring:在找不到匹配 Bean 时也不报错。

你可能感兴趣的:(spring学习1.2自动装配Bean - 强化)