Spring references beans in different xml
To reference the bean defined in the Spring-Common.xml in the Spring-Output.xml, you need to use Label. If it is referenced in the same xml file, use Label.
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
Spring-Common.xml
When calling the context method, write as follows:
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();}