Spring中引用不同xml中的bean

想要在Spring-Common.xml中引用 Spring-Output.xml中定义的bean 需要使用<ref bean="XXX"/>标签,如果是同一个xml文件中引用则使用<ref local="XXX"/>标签。

 package com.spring.output;

public class OutputHelper {

        IOutputGenerator outputGenerator;
        public void generateOutput(){
            this.outputGenerator.generateOutput();
        }

        public void setOutputGenerator(IOutputGenerator outputGenerator){
            this.outputGenerator = outputGenerator;
        }
}

Spring-Output.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="CsvOutputGenerator" class="com.spring.output.impl.CsvOutputGenerator" />
    <bean id="JsonOutputGenerator" class="com.spring.output.impl.JsonOutputGenerator" />

</beans>

Spring-Common.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="OutputHelper" class="com.spring.output.OutputHelper">
        <property name="outputGenerator" >
            <ref bean="CsvOutputGenerator"/>
        </property>
    </bean>
</beans>

在调用的上下文方法的时候这样写:

 package com.spring.hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.output.OutputHelper;
public class App {
    private static ApplicationContext context;
    public static void main(String[] args)
    {
        context = new ClassPathXmlApplicationContext(new String[] {"Spring-Common.xml","Spring-Output.xml"});
        OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
        output.generateOutput();
    }
}

CsvOutputGenerator.java

package com.spring.output.impl;

import com.spring.output.IOutputGenerator;

public class CsvOutputGenerator implements IOutputGenerator {

    public void generateOutput() {
        System.out.println("Creating CsvOutputGenerator  Output......");
    }
}

JsonOutputGenerator.java

 package com.spring.output.impl;
import com.spring.output.IOutputGenerator;
public class JsonOutputGenerator implements IOutputGenerator {
    public void generateOutput() {
   System.out.println("Creating JsonOutputGenerator output.......");
    }
}

IOutputGenerator.java

package com.spring.output;

public interface IOutputGenerator {
      public void generateOutput();
}

版权声明:本文为博主原创文章,转载请注明本博客地址!

时间: 2024-10-10 12:35:54

Spring中引用不同xml中的bean的相关文章

Spring之AOP在XML中的配置方法

AOP 即 Aspect Oriental Program 面向切面编程 先来一个栗子: <aop:config> <aop:pointcut id="loggerCutpoint" expression= "execution(* com.how2java.service.ProductService.*(..)) "/> <aop:aspect id="logAspect" ref="loggerAsp

spring mvc在web.xml中的配置

spring mvc将所有的请求都经过一个servlet控制器-DispatcherServlet,这个servlet的工作就是将一个客户端的request请求分发给不同的springmvc控制器,既然是一个控制器Servlet就需要在web.xml中配置. <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.Dispa

[引用区别] c++中引用与java中引用区别

综述: 在Java中,类实例声明和构造是分开."T a;"是声明,而"a=new T();"才是构造.引用声明和C++相同.但是Java的机制与C++不同,Java中的引用也叫句柄,或者说句柄才是其真实名称.类声明的都是一个句柄,调用构造函数才会使得句柄指向类实例.因此Java中没有类似于C++中的复制函数,因为Java的复制都是直接复制句柄内容.例如"T b=a;"只不过是将a的句柄复制(赋值)给了b,从而b也指向a指向的类实例.可以看出Jav

Andriod ADT v22.6.2版本中在Mainactivity.java中使用fragment_main.xml中TextView控件对象的问题

众所周知,我们既可以在 activity_main.xml文件中控制activity中的view,也可以使用java代码的set..()方法控制它.在学习过程中,发现在ADT新版本中,和以前版本有区别: 新建Andriod工程后,MainActivity 不再继承Activity,而继承的是ActionBarActivity:在layout文件夹下会自动生成两个.xml文件,activity_main.xml文件和fragement_main.xml文件,和以前的版本只有一个activity_m

基础:c++中引用与java中的引用

using namespace std; class Point { public: double x; double y; Point(){} void setPoint(double x,double y ) { this->x = x; this->y = y; } Point(double xx,double yy) { this->x=xx; this->y=yy; } }; class Point1 { public: Point point; void set() {

MyEclippse中使用struts-default.xml中定义的拦截器(timmer,logger)

环境:MyEclipse 2015 Stable 2.0:struts2-core-2.3.16.1.jar等 struts.xml <struts> <package name="p1" namespace="/" extends="struts-default"> <action name="m1" class="org.ah.s2.C1" method="m1&

SpringMVC中在web.xml中添加中文过滤器的写法

<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value&

[工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息

跟上一篇类似,我们也需要对APK的一些诸如umengkey,ADkey,TalkingData进行验证,那么我们同样需要解压apk文件,然后提取其中的AndroidManifest.xml.然后解析xml对内容进行分析对比. 1.解压apk文件 if (Path.GetExtension(filePath).Equals(".apk")) { // 获取应用名称 String appName = Path.GetFileNameWithoutExtension(filePath); /

web.xml中Filter过滤器标签说明

原文:http://www.cnblogs.com/edwardlauxh/archive/2010/03/11/1918618.html 在研究liferay框架中看到Web.xml中加入了过滤器的标签,可以根据页面提交的URL地址进行过滤,发现有几个新标签没用过,下面就介绍以下几个过滤器的标签用法: <!-- 定义Filter --> <filter> <!-- Filter的名字 --> <filter-name>log</filter-name