IoC/DI---实例化bean

继续前面的Ioc/DI学习。

Bean的命名:
        按照Java变量的命名方式,可以命名一个或者多个名称,但是在一个IOC容器里必须是唯一的。可以创建别名,利用别名同样可以获取到bean。
        别名的创建方式:

        测试类型获取方式与前面的通过name的名字获取一样,只是现在换成了别名tt。

实例化Bean技术--反射
        可以简单的理解为读取XML配制文件,将键值对转换Map,context通过getBean("key")取得具体的实例,而类的实例化则是通过反射机制,实例化的过程就类似于我们常用的new()。

三种实例化bean方式:
        1、构造器来实例化Bean,如默认构造器(上面的例子就是)。
        2、静态工厂方法实例化;在实现类里添加静态方法创建对象,配制文件做相应的调整。


        3、实例工厂方法实例化
        在实例化时,对象之前的依赖关系(一起工作的其它对象),则通过构造器的参数、工厂方法的参数 ,或 给由构造函数或者工厂方法创建的 对象设置。


       依赖注入(DI)基本的实现方式:

DI主要有两种注入方式,即 Setter 注 入和 和  构造器 注入

1、通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法,即可实现基于setter的DI。

public class HelloImpl implements HelloApi{
    private String name = "";
    public void setName(String name){
        this.name = name;
    } 
    public String helloSpring3(int a){
        System. out .println("hello Spring3==="+a +",name="+name);
        return "Ok,a="+a;
    }
}

配制文件:

<bean name="helloBean" class="cn.javass.Spring3.hello.HelloImpl">
                   <property name="name"><value>javass Spring3</value></property>
           </bean>

2、构造器注入

public class HelloImpl implements HelloApi{
    private String name = "";
    public HelloImpl(String name){
        this.name = name;
    }
    public String helloSpring3(int a){
        System. out .println("hello Spring3==="+a+",name="+name);
        return "Ok,a="+a;
    }
}

配置文件
         <bean name="helloBean" class="cn.javass.Spring3.hello.HelloImpl">
                 <constructor-arg><value>javass Spring3</value></constructor-arg>
         </bean>

猜你喜欢

转载自blog.csdn.net/qq_27052085/article/details/83899029