Нам понадобится:
- Apache Maven
- Spring Framework
Добавляем spring-context
в зависимости в pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ru.mydesignstudio.spring.core</groupId> <artifactId>ioc</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>LATEST</version> </dependency> </dependencies> </project>
Также опишем бины в двух конфигурационных файлах beans.xml
и services.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.xsd"> <bean id="helloWorldBean" class="ru.mydesignstudio.spring.core.ioc.beans.HelloWorldBean"> </bean> </beans>
<?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.xsd"> <bean id="helloWorldService" class="ru.mydesignstudio.spring.core.ioc.services.HelloWorldService"> </bean> </beans>
Создадим контекст на основе xml-конфигурации:
package ru.mydesignstudio.spring.core.ioc; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import ru.mydesignstudio.spring.core.ioc.services.HelloWorldService; public class Application { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{ "beans.xml", "services.xml" }); HelloWorldService helloWorldService = context.getBean("helloWorldService", HelloWorldService.class); helloWorldService.sayHelloWorld(); } }
С использованием приведенной ниже конструкции мы создали контекст из двух конфигурационных файлов:
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{ "beans.xml", "services.xml" });
Также возможно включать содержимое одного конфигурационного файла в другой. Для этого создадим 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.xsd"> <import resource="beans.xml" /> <import resource="services.xml" /> </beans>
Тег <import />
в данном случае указывает, что необходимо дополнительно загрузить указанные конфигурационные файлы. Контекст создается аналогично:
ApplicationContext context = new ClassPathXmlApplicationContext("common.xml");
Для получения бина из контекста используется метод applicationContext.getBean
:
HelloWorldService helloWorldService = context.getBean("helloWorldService", HelloWorldService.class)