关闭

以activiti配置文件为例介绍Spring管理的bean工厂

标签: activitiSpring
22人阅读 评论(0) 收藏 举报
分类:

配置工厂Bean
通常由应用程序直接使用new创建新的对象,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象.
一般情况下,应用程序有自己的工厂对象来创建bean.如果将应用程序自己的工厂对象交给Spring管理,那么Spring管理的就不是普通的bean,而是工厂Bean.
得到对象的方式有两种:
1.调用getBean()方法,Spring返回的不是直接创建的Bean的实例,而是由工厂Bean创建的Bean实例.
2.通过Spring的注解@Autowired得到配置文件配置过的对象。

简要分析下配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                 http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-2.5.xsd
                                http://www.springframework.org/schema/tx
                                    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
                                          http://cxf.apache.org/jaxws 
                                            http://cxf.apache.org/schemas/jaxws.xsd
                                            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

        <!-- Activiti begin
             Activiti的核心工作对象processEngine依赖于这个类(SpringProcessEngineConfiguration),
             SpringProcessEngineConfiguration是核心配置文件,通过这个对象加载一些配置文件。
             这个bean中有三个属性:
             name:依赖的属性的名称,他决定着使用这个对象或者属性的名称。
             value:依赖的这个属性是一个单独的属性,不是对象,他的值是这个属性的值。
             ref:依赖的这个属性是一个bean对象,这个bean对象在这个配置文件中已经配置了这个bean,配置的id是ref的值。
         -->
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="FJMSDataSource"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="databaseSchemaUpdate" value="true"/>
        <property name="jobExecutorActivate" value="false"/>
        <property name="history" value="full"/>
        <property name="processDefinitionCacheLimit" value="10"/>
    </bean>

    <!-- 这个是activiti的核心类,这个类依赖另一个类processEngineConfiguration -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
    </bean>

    <!--通过ProcessEngineFactoryBean加载的对象可以得到以下这些对象。得到这些对象的方式是通过工厂模式得到的。
        factory-method:通过工厂中的这个方法可以得到这个对象。
        factory-bean:工厂依赖的bean对象,他的值是依赖的bean对象的id值。
    -->
    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>
    <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService"/>
    <bean id="formService" factory-bean="processEngine" factory-method="getFormService"/>
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>
    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"/>
    <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService"/>
    <!-- Activiti end -->

    <context:annotation-config />
    <!-- 对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能-->
    <aop:aspectj-autoproxy />

    <context:annotation-config />
    <!-- 对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能-->
    <aop:aspectj-autoproxy />
</beans>
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

深入学习Spring框架之五通过工厂方法创建Bean

前面我们介绍了,通过构造器的方式创建Bean对象,今天我们来讲一下通过工厂方法来创建Bean。     有些时候,我们有必要将一些类设置为单例模式,比如说一个国家的最高领导人,再比如我们在银行办理业...
  • lycyl
  • lycyl
  • 2016-09-08 16:01
  • 1045

Spring学习(三)ioc工厂bean深入理解

> 我所理解的工厂bean: 我们在使用ioc容器形成类之间的依赖关系,也就是在配置文件中配置bean的时候,一般是class指向的是实体bean类,通过ref将另外一个bean对象注入到这个类中...
  • u011250851
  • u011250851
  • 2015-08-25 22:24
  • 5426

Spring管理Bean的生命周期,Spring创建的Bean是单实例还是多实例?

Spring框架对于Bean类的实例化、值的注入、依赖关系的注入等,都是由Spring的
  • Anyu_Li
  • Anyu_Li
  • 2014-08-27 10:32
  • 1642

Spring通过工厂方法配置Bean

通过静态工厂方法配置Bean1、调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单地调用静态方法,而不用关心创建对象的细节 2、要声明通过静态方法创建的B...
  • jyxmust
  • jyxmust
  • 2017-02-01 23:56
  • 3044

Spring单例Bean与单例模式的区别

Spring单例Bean与单例模式的区别在于它们关联的环境不一样,单例模式是指在一个JVM进程中仅有一个实例,而Spring单例是指一个Spring Bean容器(ApplicationContext...
  • yiifaa
  • yiifaa
  • 2017-07-08 19:37
  • 1748

转:Spring使用静态工厂方法创建Bean

如何在Spring中不再使用Spring创建Bean实例,而是把Bean创建过程转移到开发者手中。 1. 使用静态工厂方法创建Bean     使用静态工厂方法创建Bean实例时,class属...
  • u012110719
  • u012110719
  • 2015-08-18 16:03
  • 1554

activiti之spring管理监听器的方法

以下博客为转载,原文博客:http://blog.csdn.net/v_will/article/details/78001453这篇文章主要记录流程监听器的部分用法,整个环境实在集成在spring下...
  • Dynamic_W
  • Dynamic_W
  • 2017-10-25 10:23
  • 419

Spring Bean的初始化和销毁方式详解

最近在项目中需要封装kafka的服务,其中使用到了工厂模式,该模式涉及到了Spring Bean的初始化和销毁,如是研究了一番,总结如下,和大家共勉之 Spring Bean的初始化和销毁Bean有几...
  • liuchuanhong1
  • liuchuanhong1
  • 2016-10-26 22:51
  • 1538

spring详解:通过FactoryBean自定义工厂初始化Bean

FactoryBean是一个接口,扩展功能提供给用户自定义工厂方法和工厂对象用于实例化对象。
  • u013458516
  • u013458516
  • 2015-11-03 15:17
  • 2349

Spring学习笔记一: Bean工厂(BeanFactory )与应用上下文(ApplicationContext)BeanFactory

bean工厂:最简单的容器,提供了基础的依赖注入支持。创建各种类型的Bean. 应用上下文(ApplicationContext):建立在bean工厂基础之上,提供系统架构服务。beans包提供了以...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2016-07-14 20:19
  • 2137
    个人资料
    • 访问:14484次
    • 积分:811
    • 等级:
    • 排名:千里之外
    • 原创:67篇
    • 转载:12篇
    • 译文:0篇
    • 评论:0条