当前位置: 首页 > 知识库问答 >
问题:

Spring Bean容器中的优先顺序

祖迪
2023-03-14
<bean id="wolf" class="com.sac.DI.Wolf" />
<bean id="lion" class="com.sac.DI.Lion" />
<bean id="zoo" class="com.sac.DI.Zoo">
    <constructor-arg ref="lion" />
    <property name="wild" ref="wolf" />
</bean>
package com.sac.DI;

public class Zoo {

    private WildAnimal wild;

    public Zoo(WildAnimal animal) {
        this.wild = animal;
    }

    public void setWild(WildAnimal wild) {
        this.wild = wild;
    }

    public void testSound() {
        System.out.println(wild.sound());
    }
}

所以我的问题是:

  1. 总是设置优先级的setter注入,还是有某个属性定义它。
  2. 为什么Setter注入优先于构造函数注入

共有1个答案

洪弘壮
2023-03-14

使用注释而不是xml配置,您可以更清楚地看到M.Deinum所说的话:

@Configuration
public class Config {
    @Bean
    public WildAnimal wolf(){
        return new Wolf();
    }

    @Bean
    public WildAnimal lion(){
        return new Lion();
    }

    @Bean
    public Zoo zoo(){
        Zoo zoo = new Zoo(lion());
        zoo.setWild(wolf());
        return zoo;
    }
}

首先,使用构造函数注入创建对象,然后使用setter注入覆盖属性。

希望能有所帮助。

 类似资料:
  • 问题内容: 我想了解express.js中的顺序优先级。例如,下面的代码 如果请求来自客户端localhost:3000 / api / abc和localhost:3000 / user / abc,则来自api和用户模块的响应。但是,如果我发出类似localhost:3000 / myName / xyz的请求,则应用程序模块将返回响应。此行为使我担心expressjs的优先顺序以及路由器模块

  • 有没有办法在刷新Spring上下文后找出bean创建顺序(或至少依赖顺序)? 只要简单的bean定义顺序就可以了。我不想要他们注册的顺序。我想要创建它们的顺序(依赖关系树)

  • 问题内容: 我试图弄清楚为什么我的一个css类似乎覆盖了另一个(而不是相反) 这里我有两个CSS类 在我看来,我打电话给 字体(重叠元素)显示为10px而不是20px-有人可以解释为什么会这样吗? 问题答案: 有几条规则(按此顺序应用): 内联css(html样式属性)覆盖样式标签和css文件中的css规则 较具体的选择器优先于较不具体的选择器 如果两个规则具有相同的特异性,则稍后出现在代码中的规

  • 如果我有一个PriorityQueue,它有一个Comparator,一个element类实现了Comparable类,以及它们的排序冲突,那么队列将如何处理排序?它是抛出异常还是忽略一个排序规则?

  • 我试图覆盖JAX-WS web服务的Apache CXF实现。根据JAX-WS=当安装Apache CXF时,它“窃取”默认的JDK JAX-WS实现,如何解决?,我正在尝试创建/覆盖提供程序实现。 有了这个配置,我们就有了javax。xml。ws。spi。至少在两个JAR中提供程序:/tomcat/lib/cxf rt frontend jaxws-*。jar和我们自己的jar/tomcat/w

  • 问题内容: 在Java中,多维数组是以列优先还是行优先的顺序存储的? 问题答案: Java没有多维数组。它具有数组的数组。例如 …是(当然是)的数组。 因此,Java既不是列优先顺序也不是行优先顺序(但请参见下面的有关如何读取的注意事项),因为给定数组的条目存储在连续的内存块中,而这些条目所指向的从属数组是对象的引用。完全独立的,无关的内存块。这也意味着Java的数组数组固有地呈 锯齿状 :处的条