Найти

Вы здесь:

 

Различные способы задания конфигурации Spring Beans

Примечания

 

С помощью xml-файла resources/beans.xml

Определение resources/beans.xml:

<bean id="russianGreeter" class="ru.perm.v.springconfig.greeters.RussianGreeter"/>
<bean id="danishGreeter" class="ru.perm.v.camelinaction.greeters.greeters.DanishGreeter"/>
<bean id="englishGreeter" class="ru.perm.v.springconfig.greeters.EnglishGreeter"/>

<bean id="greetMain" class="ru.perm.v.springconfig.greeters.GreetMainApplication">
<property name="greeter" ref="russianGreeter"/>
</bean>

Импорт в проект:

@Configuration
@ImportResource({"classpath*:beans.xml"})
public class BeansConfiguration {
}

Или можно так подгрузить и получить bean :

@SpringBootApplication
public class GreetMainApplication {

    public static void main(String[] args) {
        SpringApplication.run(GreetMainApplication.class, args);
        ApplicationContext context =
                new ClassPathXmlApplicationContext("beans.xml");

        GreeterService greeterService =
                (GreeterService) context.getBean("selectedGreeterService");
        System.out.println(greeterService.getHello()); // Hello, vasi!
    }
}

или как обычно:

@RestController
@RequestMapping("/greet")
public class GreeterRest {

    /**
     * inject from beans.xml property <property name="greeter" ref="russianGreeter"/>
     */
    @Autowired
    GreeterService selectedGreeterService;

Запуск:

$ mvn compile exec:java -Dexec.mainClass=ru.perm.v.camelinaction.springconfig.GreetMainApplication

 

С помощью @Configuration и @Bean в conf/ConfigFromJava

С помощью @Configuration и @Bean. Показано в conf/ConfigFromJava:

@Configuration
public class ConfigFromJava {
    @Bean
    public String beanOneFromConfigFromJava() {
    return "beanOne";
    }

    @Bean
    public String beanTwoFromConfigFromJava() {
        return "beanTwo";
    }
}

resources/beans.xml Использование в ru.perm.v.springconfig.rest.ConfigFromJavaRest.java как обычно:

@RestController
@RequestMapping("/simple_conf")
public class ConfigFromJavaRest {
@Autowired
String beanOneFromConfigFromJava;

    @Autowired
    String beanTwoFromConfigFromJava;

    ....

 

Unit tests

$ mvn test

 

Сборка исполняемого jar

$ mvn package

Запуск:

java -jar target/camel-spring-0.0.1.jar

 

Примечания:

  • Удален WARNING "172 [main] WARN org.springframework.beans.factory.xml.ResourceEntityResolver - DTD/XSD XML entity http://www.springframework.org/schema/beans/spring-beans.xsd not found, falling back to remote https resolution". Исправлен заголовок файла beans.xml.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  • Исправление ошибки: An exception occured while executing the Java class. Line 15 in XML document from class path resource [beans.xml] is invalid: Attribute "xmlns" must be declared for elementtype "beans". Причина - удален заголовок:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">