spring 简介及bean的创建方式
2011-02-20 19:53
459 查看
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 容器提供的众多辅作类,使用这些类能够加快应用的开发,
如:JdbcTemplate、HibernateTemplate。
l Spring对于主流的应用框架提供了集成支持,
如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。
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 容器提供的众多辅作类,使用这些类能够加快应用的开发,
如:JdbcTemplate、HibernateTemplate。
l Spring对于主流的应用框架提供了集成支持,
如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。
相关文章推荐
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- spring创建bean的三种方式
- Spring-----7、bean实例的创建方式及依赖配置
- Spring(IOC) 对象创建三种方式、对象bean起别名
- spring详解:bean的三种创建方式
- Spring-6.创建bean的三种方式
- spring AbstractBeanDefinition创建bean类型是动态代理类的方式
- Spring整理系列(01)——spring概念简介、bean扫描与注册实现方式
- Spring创建Bean的三种方式
- spring创建单例bean和非单例bean的方式
- Spring管理Bean的三种创建方式
- spring容器创建对象的3种方式(bean的实例化)
- Spring----创建Bean的3种方式
- Spring创建Bean的几种方式
- spring学习教程7-spring容器创建bean对象的方式以及如何处理多个spring配置文件
- Spring中创建bean的三种方式
- spring概念简介、bean扫描与注册实现方式
- Spring创建Bean的三种方式
- spring创建bean的三种方式-通过构造器,通过静态工厂方法,通过实例工厂方法
- Spring创建bean的三种方式