目录
第二种:FactoryBean(一般都不自己写FactoryBean实例,而是使用spring已经写好的)
第三种:集成静态简单工厂(一般不用,以后学习activity要用哦)
4种实例化Bean的方式
第一种:需要公共无参构造方法,常用
自己写的对象:Dao,Service,Action都使用这种方法
第二种:FactoryBean(一般都不自己写FactoryBean实例,而是使用spring已经写好的)
添加hibernate需要的jar文件
实例化不能通过默认无参构造方法获取的bean
通过FactoryBean的子类获取SessionFactory 的实例(添加hibernate的jar文件)
如:
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
FactoryBean接口
public interface FactoryBean<T> {
//获取对象的实例
T getObject() throws Exception;
//获取对象实例的Class类型
Class<?> getObjectType();
//是否单例
boolean isSingleton();
}
MySessionFactoryBean
面试题:BeanFactory和FactoryBean的区别
BeanFactory接口,顶层父工厂,容器,获取bean的实例
FactoryBean 接口,实例化不能通过默认无参构造方法获取的bean,通过实现类的getObject方法来返回实例,如SessionFactory
org.springframework.orm.hibernate3.LocalSessionFactoryBean
集成hibernate3.x
Org.springframework.orm.hibernate4.LocalSessionFactoryBean
集成hibernate4.x
Junit
第三种:集成静态简单工厂(一般不用,以后学习activity要用哦)
静态简单工厂(静态方法)
spring集成静态简单工厂
因为spring本身就是大的工厂
第四种:集成实例简单工厂(一般不用)
实例简单工厂(实例方法)
spring集成实例简单工厂
控制反转IOC小结
public class UserServiceImpl{
private IUserDao dao =new UserDaoJdbcImpl();
}
dao对象是在应用内部创建及维护的。
所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转,目的是为了获得更好的扩展性和良好的可维护性。
当我们把依赖对象交给外部容器负责创建,那么UserServiceImpl类可以改成如下:
public class UserServiceImpl {
private IUserDao dao;
set方法:依赖注入
}
依赖注入DI小结
所谓依赖注入就是指:在运行期(实例好了spring容器ApplicationContext),由外部容器动态地将依赖对象注入到组件中。
三种依赖注入方式
Type1 接口注入(已经out了)
Type2 设值方法注入(setter)
Type3 构造子注入