Создание ApplicationContext

Нам понадобится:

  • 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)