Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Autowire时,您在哪里设置要连接的bean?_Java_Spring - Fatal编程技术网

Java 使用Autowire时,您在哪里设置要连接的bean?

Java 使用Autowire时,您在哪里设置要连接的bean?,java,spring,Java,Spring,当您使用Autowire注释标记某些内容时,您是说您希望该特定类(例如类)自动连接到DI 现在,您将要在Autowire中使用的目标类具体设置在哪里 参考: 因此,在下面的示例中,您可以自动关联setter: public class SimpleMovieLister { private MovieFinder movieFinder; @Required public void setMovieFinder(MovieFinder movieFinder) {

当您使用Autowire注释标记某些内容时,您是说您希望该特定类(例如类)自动连接到DI

现在,您将要在Autowire中使用的目标类具体设置在哪里

参考:

因此,在下面的示例中,您可以自动关联setter:

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Required
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

    // ...
}

spring会搜索实现接口MovieFinder的任何类吗?

如果上下文中有MovieFinder类型的bean,它将被注入。如果有多个该类型的bean,将抛出异常

在构造函数注入的情况下,@Autowired和@Required我假定只是按类型自动连接的


如果要使用注释显式指定名称,请使用@Resourcename=beanId

如果上下文中有MovieFinder类型的bean,则会将其注入。如果有多个该类型的bean,将抛出异常

在构造函数注入的情况下,@Autowired和@Required我假定只是按类型自动连接的

如果要使用注释显式指定名称,请使用@Resourcename=beanId

spring会搜索任何类吗 它实现了接口 电影发现者

基本上,是的。当它发现多个异常时,它会变得有趣,在上下文启动时会抛出一个异常,除非您采取步骤帮助它

有3种方法可以解决多个autowire候选项:

使用autowire candidate=false标记您不想自动连线的对象。 用primary=true标记要自动连线的对象 通过指定@qualifier thebeaniwant来限定@Autowired注释 以上任何一项都可以,你可以选择最适合你的情况

@QualifierTheBeanIWant和@Resourcename=TheBeanIWant非常相似,不同之处在于@Qualifier帮助Spring缩小了自动连接的范围,而@Resource则显式地按名称挑选bean,而不考虑类型

spring会搜索任何类吗 它实现了接口 电影发现者

基本上,是的。当它发现多个异常时,它会变得有趣,在上下文启动时会抛出一个异常,除非您采取步骤帮助它

有3种方法可以解决多个autowire候选项:

使用autowire candidate=false标记您不想自动连线的对象。 用primary=true标记要自动连线的对象 通过指定@qualifier thebeaniwant来限定@Autowired注释 以上任何一项都可以,你可以选择最适合你的情况


@QualifierTheBeanIWant和@Resourcename=BeanIwant非常相似,不同之处在于@Qualifier帮助Spring缩小自动连接的范围,而@Resource则显式地按名称挑选一个bean,而不管类型如何。

有时将所有内容都放在一个地方很好,例如xml文件,如果你掌握了注释,那么注释是非常有意义的。我明白了,如果你有1+个实现,你说你可以指定beanId,但是你需要用XML声明Bean,或者你可以通过注释设置beanId吗?你可以通过注释设置ID。此外,它们还有默认ID。例如@Component public class SomeBeanImpl的默认名称是someBeanImplits很好,所有东西都放在一个地方有时也就是xml文件,不,如果你掌握了注释,注释就非常有意义。我明白了,如果你有1+个实现,你说你可以指定beanId,但是,您需要用XML声明bean,或者您可以通过注释设置beanID吗?您可以通过注释设置ID。此外,它们还有默认ID。例如@Component公共类SomeBeanImpl具有默认名称SomeBeanImpl