关于Bean的初始化方式

关于Bean的初始化方式

为什么当类的构造比较复杂的时候就用静态工厂或者实例工厂来初始化类,还有就是复杂是怎么样才算复杂

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
暗淡冬天 2019-06-20 23:23:58

比如这样吗?

public class Teacher {
    private String name=""杨晓玲;
    public String getName() {
        return name;
    }
}
import org.springframework.beans.factory.annotation.Autowired;

public class Bean3 {

    private String id;
    private String cource;
    private double time;
    @Autowired
    private Teacher teacher;
    public Bean3(String id, String cource, double time) {
        this.id = id;
        this.cource = cource;
        this.time = time;
    }
    @Override
    public String toString() {
        return id+","+cource+","+time+","+this.teacher.getName();
    }
}
public class BeanFactory {
    /*静态工厂,就是在工厂类当中提供了一个静态的方法,返回一个类的实例对象*/
    public static Bean3 createBean3(){
        return new Bean3("1706050401","高等数学",1.5);
    }
}
<!--第二种: 通过静态工厂方法创建bean实例-->
<bean id="bean3" class="com.cd4356.demo3.BeanFactory" factory-method="createBean3"/>
<!--注册驱动,使@Autowired、@Resource、@Value等自动装配类型注解生效-->
<context:annotation-config/>

可我怎么觉得用这种方式更麻烦了,还需多创建一个类,看起来更难以理解了

  • 同学这样看起来的确是有些复杂,但是如果我们的项目中有成千上万个bean,我们需要在xml中配置很多个bean。这样也大大增加了开发的难度。此时使用工厂的的方式来创建是不是会简单一点呢,并且spring底层使用了大量的反射机制来与工厂类相结合使得bean的构造简单化。因此在一个应用中使用工厂的模式有很大的优势。
    2019-06-21 10:14:28
好帮手慕阿满 2019-06-19 18:09:50

同学理解有点问题,这里是说使用静态工厂或者实例工厂的方法创建对象更方便。

祝:学习愉快~

好帮手慕阿满 2019-06-19 13:35:07

同学你好,当类中有多个属性,甚至使用别的类作为参数类型时,如果想初始化一个带参的对象,使用地址bean管理的方式,可以需要在配置文件中增加配置来给属性命名,比如:

http://img1.sycdn.imooc.com//climg/5d09c95b0001d4be06740118.jpg

如果使用静态工厂和 实例工厂的方式,直接返回一个带参构造对象即可。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕容653435 #1
    意思是把原来在xml文件中对某个类的属性值的赋予 转到工厂类中来赋予?这样xml文件里面就看不到具体的属性值了
    2019-06-19 13:59:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师