XML дефинирани бобчета в пролетното зареждане

1. Въведение

Преди Spring 3.0 XML беше единственият начин за дефиниране и конфигуриране на фасул. Spring 3.0 представи JavaConfig , което ни позволява да конфигурираме компоненти , използвайки Java класове. Въпреки това, XML конфигурационните файлове се използват и до днес.

В този урок ще обсъдим как да интегрирате XML конфигурации в Spring Boot .

2. Анотацията @ImportResource

В @ImportResource анотация ни позволява да импортирате един или повече ресурси, съдържащи определения боб.

Да приемем, че имаме файл beans.xml с дефиницията на боб:

За да го използваме в приложението Spring Boot, можем да използваме анотацията @ImportResource , казвайки й къде да намерим конфигурационния файл:

@Configuration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { @Autowired private Pojo pojo; public static void main(String[] args) { SpringApplication.run(SpringBootXmlApplication.class, args); } }

В този случай инстанцията на Pojo ще бъде инжектирана с боб, дефиниран в beans.xml .

3. Достъп до свойства в XML конфигурации

Ами използването на свойства в XML конфигурационни файлове? Да предположим, че искаме да използваме свойство, декларирано в нашия файл application.properties :

sample=string loaded from properties!

Актуализация Нека на POJO определението, в beans.xml , за да се включи проба имота:

След това нека проверим дали свойството е правилно включено:

@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBootXmlApplication.class) public class SpringBootXmlApplicationIntegrationTest { @Autowired private Pojo pojo; @Value("${sample}") private String sample; @Test public void whenCallingGetter_thenPrintingProperty() { assertThat(pojo.getField()) .isNotBlank() .isEqualTo(sample); } }

За съжаление този тест ще се провали, тъй като по подразбиране XML конфигурационният файл не може да разреши заместители . Въпреки това можем да разрешим това, като включим анотацията @EnableAutoConfiguration :

@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }

Тази анотация позволява автоматично конфигуриране и опити за конфигуриране на боб.

4. Препоръчителен подход

Можем да продължим да използваме XML конфигурационни файлове. Но можем да помислим и за преместване на цялата конфигурация в JavaConfig по няколко причини. Първо, конфигурирането на компонентите в Java е безопасно за типа , така че ще улавяме грешки в типа по време на компилация. Също така, XML конфигурацията може да нарасне доста голяма , което затруднява поддръжката.

5. Заключение

В тази статия видяхме как да използваме XML конфигурационни файлове, за да дефинираме нашите компоненти в приложението Spring Boot. Както винаги, изходният код на примера, който използвахме, е достъпен в GitHub.