spring 简介及bean的创建方式

 IOC

public class  PersonServiceImpl

{

     private  PersonDao  personDao = new  PersonDaoImpl();

 

      public void  save(Person person)

      {

             personDao.save(person);

     }

}

 PersonDaoImpl 是在应用内部创建及维护的

 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建   及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

 

 

当我们把依赖对象交给外部容器负责创建,那么 PersonServiceBean 类可以改成如下:

public class  PersonServiceImpl

{

     private  PersonDao  personDao = null ;

    //通过构造器参数,让容器把创建好的依赖对象注入进 PersonServiceBean,当然也可以

      使用setter方法进行注入。

     public PersonServiceImpl ( PersonDao  personDao)

     {

            this.personDao=personDao;

     }

 

      public void  save(Person person)

      {

             personDao.save(person);

      }

}

所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

 

 

为什么要用spring,用spring到底有什么好处?

 

spring Bean 的实例化:

 

 

 

3.使用实例工厂方法实例化

   <bean id="PersonFactory" class="com.imti.springdemo.configure.PersonFactory">

    </bean>

   

    <bean id="chinese" factory-bean="PersonFactory" factory-method="getPerson">

        <constructor-arg value="chinese"/>

    </bean>

   

    <bean id="american" factory-bean="PersonFactory" factory-method="getPerson">

        <constructor-arg value="american"/>

    </bean>

 

 

 

静态工厂方法实例化和实例工厂方法实例化

区别:

1. 实例工厂方法创建Bean,必须将实例工厂配置成Bean实例,而静态工厂方法无须配置工厂Bean

2.实例工厂方法创建Bean,必须使用factory-bean属性确定工厂Bean,而静态工厂方法创建Bean,则使用class属性确定静态工厂类。

使用实例工厂方法实例化,除了改该配置文件,还需要把TeacherFactory工厂里的静态方法改成非静态的

相同:

1.都需要使用factory-method属性指定产生Bean实例的工厂方法。
2.工厂方法需要的参数,都使用constructor-arg属性确定参数值。

其他依赖注入属性,都使用property元素确定参数值。

1. 用构造器来实例化

    <bean id="chinese" class="com.imti.springdemo.configure.Chinese"></bean>、

 

2. 使用静态工厂方法实例化

    <bean id="chinese" class="com.imti.springdemo.configure.PersonFactory" factory-method="getPerson">

        <constructor-arg value="chinese"/>

    </bean>

   

    <bean id="american" class="com.imti.springdemo.configure.PersonFactory" factory-method="getPerson">

        <constructor-arg value="american"/>

    </bean>

l 降低组件之间的耦合度,实现软件各层之间的解耦。 (Spring是面向接口编程的)
l 以使用容器提供的众多服务,如:事务管理服务、消息服务等等。
l 容器提供单例模式支持,开发人员不再需要自己编写实现代码。
l 容器提供了AOP技术,利用它很容易实现运行期监控等如权限拦截、功能。
l 容器提供的众多辅作类,使用这些类能够加快应用的开发,

   如:JdbcTemplateHibernateTemplate

l Spring对于主流的应用框架提供了集成支持,

   如:集成HibernateJPAStruts等,这样更便于应用的开发。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值