- 浏览: 22338 次
- 性别:
- 来自: 北京
文章分类
最新评论
(本文内容有网上+自己修改,如有错误,请指正,谢谢。)
在spring中实例化bean的方式:
一、使用构造器实例化;
这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现。
<Xml代码>
<!--applicationContext.xml配置:-->
<bean id="personService" class="cn.mytest.service.impl.PersonServiceBean"></bean>
id是对象的名称,class是要实例化的类,然后再通过正常的方式进调用实例化的类即可,比如:
<Java代码>
public void inSpring(){
//加载spring配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{ "/conf/applicationContext.xml"});
//调用getBean方法取得被实例化的对象。
PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService");
psb.save();
}
采用这种实例化方式要注意的是:要实例化的类中如果有构造器的话,一定要有一个无参的构造器。
二、使用静态工厂方法实例化;
根据这个中实例化方法的名称就可以知道要想通过这种方式进行实例化就要具备两个条件:
(一)、要有工厂类及其工厂方法;
(二)、工厂方法是静态的。OK,知道这两点就好办了,首先创建工程类及其静态方法:
<Java代码>
package ....;
/**
*创建一个工厂类 PersonServiceFactory
*
*/
public class PersonServiceFactory {
//创建静态方法
public static PersonServiceBean createPersonServiceBean(){
//返回实例化的类的对象
return new PersonServiceBean();
}
}
然后再去配置spring配置文件,配置的方法和上面有点不同,这里也是关键所在
<Xml代码>
<!--applicationContext.xml配置:-->
<bean id="personService1" class="cn.mytest.service.impl.PersonServiceFactory" factory-method="createPersonServiceBean"></bean>
id是实例化的对象的名称,class是工厂类,也就实现实例化类的静态方法所属的类,
factory-method是实现实例化类的静态方法。
然后按照正常的调用方法去调用即可:
<Java代码>
public void inSpring(){
//加载spring配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{ "/conf/applicationContext.xml"});
//调用getBean方法取得被实例化的对象。
PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService1");
psb.save();
}
三、使用实例化工厂方法实例化。
这个方法和上面的方法不同之处在与使用该实例化方式工厂方法不需要是静态的,但是在spring的配置文件中需要配置更多的内容,,首先创建工厂类及工厂方法:
<Java代码>
package ...;
/**
*创建工厂类 PersonServiceFactory
*
*/
public class PersonServiceFactory {
//创建静态方法
public PersonServiceBean createPersonServiceBean1(){
//返回实例化的类的对象
return new PersonServiceBean();
}
}
然后再去配置spring配置文件,配置的方法和上面有点不同,这里也是关键所在
<Xml代码>
<!--applicationContext.xml配置:-->
<bean id="personServiceFactory" class="cn.mytest.service.impl.PersonServiceFactory"></bean>
<bean id="personService2" factory-bean="personServiceFactory" factory method="createPersonServiceBean1"></bean>
这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。
然后按照正常的调用方法去调用即可:
<Java代码>
public void instanceSpring(){
//加载spring配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{ "/conf/applicationContext.xml"});
//调用getBean方法取得被实例化的对象。
PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService2");
psb.save();
}
感谢 glzaction
在spring中实例化bean的方式:
一、使用构造器实例化;
这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现。
<Xml代码>
<!--applicationContext.xml配置:-->
<bean id="personService" class="cn.mytest.service.impl.PersonServiceBean"></bean>
id是对象的名称,class是要实例化的类,然后再通过正常的方式进调用实例化的类即可,比如:
<Java代码>
public void inSpring(){
//加载spring配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{ "/conf/applicationContext.xml"});
//调用getBean方法取得被实例化的对象。
PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService");
psb.save();
}
采用这种实例化方式要注意的是:要实例化的类中如果有构造器的话,一定要有一个无参的构造器。
二、使用静态工厂方法实例化;
根据这个中实例化方法的名称就可以知道要想通过这种方式进行实例化就要具备两个条件:
(一)、要有工厂类及其工厂方法;
(二)、工厂方法是静态的。OK,知道这两点就好办了,首先创建工程类及其静态方法:
<Java代码>
package ....;
/**
*创建一个工厂类 PersonServiceFactory
*
*/
public class PersonServiceFactory {
//创建静态方法
public static PersonServiceBean createPersonServiceBean(){
//返回实例化的类的对象
return new PersonServiceBean();
}
}
然后再去配置spring配置文件,配置的方法和上面有点不同,这里也是关键所在
<Xml代码>
<!--applicationContext.xml配置:-->
<bean id="personService1" class="cn.mytest.service.impl.PersonServiceFactory" factory-method="createPersonServiceBean"></bean>
id是实例化的对象的名称,class是工厂类,也就实现实例化类的静态方法所属的类,
factory-method是实现实例化类的静态方法。
然后按照正常的调用方法去调用即可:
<Java代码>
public void inSpring(){
//加载spring配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{ "/conf/applicationContext.xml"});
//调用getBean方法取得被实例化的对象。
PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService1");
psb.save();
}
三、使用实例化工厂方法实例化。
这个方法和上面的方法不同之处在与使用该实例化方式工厂方法不需要是静态的,但是在spring的配置文件中需要配置更多的内容,,首先创建工厂类及工厂方法:
<Java代码>
package ...;
/**
*创建工厂类 PersonServiceFactory
*
*/
public class PersonServiceFactory {
//创建静态方法
public PersonServiceBean createPersonServiceBean1(){
//返回实例化的类的对象
return new PersonServiceBean();
}
}
然后再去配置spring配置文件,配置的方法和上面有点不同,这里也是关键所在
<Xml代码>
<!--applicationContext.xml配置:-->
<bean id="personServiceFactory" class="cn.mytest.service.impl.PersonServiceFactory"></bean>
<bean id="personService2" factory-bean="personServiceFactory" factory method="createPersonServiceBean1"></bean>
这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。
然后按照正常的调用方法去调用即可:
<Java代码>
public void instanceSpring(){
//加载spring配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{ "/conf/applicationContext.xml"});
//调用getBean方法取得被实例化的对象。
PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService2");
psb.save();
}
感谢 glzaction
发表评论
-
jdk tomcat 环境变量配置
2015-07-09 21:32 446Win7 下如何配置java环境变量 1。准备jdk包,wi ... -
页面有两个frame,怎样点击一个的链接改变另一个的内容
2015-04-07 13:58 1476<a src="地址" targe ... -
java代码怎么实现分页?求指教!!
2015-03-31 14:22 42Java实现分页源码及其思想 -
javaScript (1)
2015-03-24 17:19 586JavaScript 1、运算符 运算符就是完成操作的一 ... -
MyEclipse里部分习惯的更改
2015-03-20 17:30 523继续补充中---------------------- ... -
javaSE javaEE javaME == API下载
2015-03-20 14:06 837oracle下载各种API文档: http://www.ora ... -
spring------>>cvc-elt.1: Cannot find the declaration of element
2015-03-18 16:49 532将-------- <?xml version=&qu ... -
log4j
2015-03-18 16:14 389链接: http://www.blogjava.net/ ... -
PowerDesigner使用教程
2015-03-17 17:09 466链接跳转: http://www.cnblogs.com/la ... -
js乱码
2015-03-17 15:43 460检查你js文件的编码格式(简单的办法就是在dreamweave ... -
hibernate三种 状态
2015-03-16 21:49 476Transient:(瞬时状态)内存中一个对象,没有相对应 的 ... -
ssh整合所需lib包目录
2015-03-16 11:44 580转载于:http://blog.csdn.ne ... -
tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class
2015-03-13 16:05 764这个问题的出现是由于slf4j-log4j12 jar的变化, ... -
< could not insert: [com.hibernate.*.* >
2015-03-11 09:42 524hibernate.cfg.xml文件配置: <!- ... -
SSH 错误 信息收集
2015-03-06 16:47 706(文章为转载收集整理。。。。。若有不足请指正!!!谢谢。) ... -
log4j
2015-03-05 11:20 467### 设置org.zblog域对应的级别INFO,DEBUG ... -
B/S C/S
2015-03-05 09:27 526<!--文章改写--> C/S结构,即Clie ... -
Swing和AWT
2015-03-05 09:24 527原文出:http://cherry007.iteye.com/ ... -
错误整理。。。。
2015-03-04 17:28 446文件内容截取自:http://www.cnblogs.com/ ... -
MyEclipse 快捷键
2015-03-04 10:51 470MyEclipse 快捷键 自己设置myeclipse快捷键指 ...
相关推荐
4. **启动后处理器(BeanPostProcessor)**:这些是特殊类型的Bean,它们在所有常规Bean实例化之后,但初始化之前进行处理。它们的实例化顺序由`@Order`注解决定,或者通过实现`Ordered`接口来控制。 5. **...
本文将详细介绍Spring中的三种主要的Bean实例化方式:XML配置、注解配置以及Java配置。 ### 1. XML配置 XML配置是Spring早期版本中最常见的Bean定义方式。在`spring_first`目录下的配置文件(如`beans.xml`)中,...
本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...
本篇文章将深入探讨Spring项目中Bean的实例化过程,包括三种主要的bean实例化方式:构造方法、静态工厂和实例工厂。 首先,让我们了解什么是Bean。在Spring中,Bean是应用程序中的业务对象,它们由Spring容器负责...
本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`<bean>`...
在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态...在实际项目中,应根据实际情况权衡利弊,选择最适合的Bean实例化策略。
进入`doGetBean()`方法,这是Bean实例化的关键步骤。`doGetBean()`会处理Bean的依赖注入、类型检查等操作。 7. **创建Bean**: `createBean(beanName, mbd, args)`在`AbstractAutowireCapableBeanFactory`中实现...
同时,对源码进行调试也是一个有效的排查手段,可以追踪到Bean实例化的具体位置,找出问题的根源。 综上所述,Spring Bean重复执行两次的问题通常是由于配置错误、依赖注入循环、初始化回调的不当使用、静态工厂...
在 Spring 框架中,Bean 的实例化是通过 BeanFactory 中的 getBean 方法来实现的,该方法根据 bean 的名字、Class 类型和参数等来得到 bean 实例。 在了解 Bean 的实例化过程之前,我们需要了解 Spring 框架中 IoC ...
在这个过程中,Spring 容器会自动调用 Bean1 的无参构造方法来实例化 Bean1,这样我们就可以获取到 Bean1 实例。 2. 静态工厂方法实例化 静态工厂方法实例化是指通过静态工厂方法来实例化 Bean。这意味着,我们...
在上面的代码中,我们使用@Configuration注解来配置Bean的初始化和销毁,并使用@Bean注解来创建Bean实例。 四、总结 在本文中,我们详细讲解了Spring Bean的初始化和销毁,包括使用@Bean的initMethod和...
Spring IOC实例化Bean有三种方法:构造器实例化、静态工厂方法实例化和实例工厂方法实例化。每种方法都有其优缺,选择哪种方法取决于实际需求。 在实际开发中,我们可以根据需要选择合适的实例化方法。例如,如果...
这篇“Spring学习笔记(2)----实例化Bean的三种方式”着重讲解了如何在Spring应用上下文中初始化Bean。以下是这三种方式的详细说明: 1. **XML配置方式** 在早期的Spring版本中,XML配置是最常见的实例化Bean的...
Spring Bean 对象实例化实现过程图解...Spring Bean 对象实例化实现过程图解是一个复杂的过程,需要了解 BeanDefinitionRegistryPostProcessor 接口、BeanPostProcessor 的注册、getSingleton 方法、createBean 方法和 ...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
- **工厂方法**:可以定义一个静态或非静态工厂方法,Spring调用这个方法来实例化bean。 3. **依赖注入(DI)** Spring的依赖注入允许bean之间通过接口而非具体实现进行耦合,提高了代码的可测试性和可维护性。...
Spring工厂方法创建(实例化)bean实例代码 Spring框架中提供了多种方式来创建bean实例,包括通过构造器、静态工厂方法和实例工厂方法等。这种方式可以让开发者更好地控制bean的创建过程,实现更多的自定义需求。 ...
- **初始化**:Spring容器在创建Bean实例后,可以调用`@PostConstruct`注解的方法进行初始化。 - **依赖注入**:Spring可以通过构造器、setter方法、字段或工厂方法来注入依赖。 - **销毁**:当Bean不再需要时,...
这样,我们的代码不再负责查找和实例化依赖的对象,而是由Spring容器根据配置来创建和管理这些对象。IoC使得我们的代码更加灵活,易于测试和维护。 依赖注入(DI)是IoC的一种实现方式。在Spring中,DI允许我们声明...
Spring允许自定义BeanPostProcessor,它们在Bean实例化后执行特定的处理,比如AOP代理。这些后处理器将在Bean实例化后,初始化前介入。 7. **Bean初始化**: 实例化完成后,Spring会执行Bean的初始化方法,包括...