使用构建器模式的Spring依赖注入

时间:2015-04-04 01:10:47

标签: java spring builder

我有一个A类,它将初始化一个B类的新对象。这个B类的新实例有一些DAO。我想做DAO的依赖注入并提供我的自定义属性并构建一个对象并获得结果。但是,我得到了No default constructor found; nested exception is java.lang.NoSuchMethodException

public class A {

    public void setChildren() {
        B b = new B.Builder().children(3).build();
    }

}

class B {

    private PersonDAO personDAO;
    private final int children;

    private B(Builder buil) {
        this.children = buil.children;
    }

    public static class Builder {

        private int children;

        public Builder children(int ch) {
            this.children = ch;
            return this;
        }

        public Builder build() {
            return new B(this);
        }

    }

    public void setPersonDao(PersonDao personDao) {
        this.personDao = personDao;
    }

}

我正在使用spring依赖注入来注入DAO。

<bean id="b" class="com.company.B">
    <property name="personDAO" ref="personDAO"/>
</bean> 

首先,我想每次创建一个新对象形式A这就是为什么我在A类中做new。有谁能告诉我如何在春天这样做?如何将依赖注入与构建器模式一起用于此类场景?

1 个答案:

答案 0 :(得分:1)

  

我没有找到默认构造函数;嵌套异常是   java.lang.NoSuchMethodException

因为B类中没有no-arg默认构造函数。

  

我想每次创建一个新对象形式,这就是我的原因   在A班做新事。

选择spring bean scopes的原型bean范围。