Я новичок в загрузке Spring и хочу реализовать простое веб-приложение, которое отображает пользовательский интерфейс с использованием некоторых шаблонов Mustache.
Я написал несколько компонентов Spring (контроллеры, DAO, Services), структура пакетов которых отличается (не попадает в тот же каталог или подкаталог, что и класс Spring Boor Runner).Поэтому я использую аннотацию @ImportResource
для объявления конфигурации пружины.Но мое приложение не читает никаких файлов конфигурации.
Пожалуйста, обратитесь к фрагменту кода ниже для более подробной информации
- Структура проекта:
Здесь не так, классы запуска загрузочных приложений Spring, написанные в пакете SpringPropertyReaderApplication
.
ApplicationConfiguration
, класс написан в той же иерархической структуре пакета, которая определила еще несколько конфигураций с использованием @ImportResource
аннотация.
Класс запуска весенней загрузки приложения.
пакет com.example.launcher;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class SpringPropertyReaderApplication {
public static void main(String[] args) {
ApplicationContext applicationContext = SpringApplication.run(SpringPropertyReaderApplication.class, args);
System.out.println("------------------------------------------------");
System.out.println("-----Printing Bean Definition Names ------------");
System.out.println("------------------------------------------------");
for (String name : applicationContext.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("------------------------------------------------");
System.out.println("--------------------END------------------------");
System.out.println("------------------------------------------------");
}
}
Класс ApplicationConfiguration, где у меня есть общее расположение других файлов конфигурации Spring.
пакет com.example.launcher.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ImportResource(locations = {"classpath*:application-context.xml"})
public class ApplicationConfiguration {
@Bean
public String someDummyBean1() {
return "someDummyBean1";
}
}
Конфигурация приложения Spring, которая не загружается контейнером.
Здесь я добавил аннотацию сканирования компонентов для сканирования моих служб и контроллеров, которые не были в том же пакете, что и класс запуска Spring.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan
base-package="com.example" />
<bean id="xmlStringBean1" class="java.lang.String">
<constructor-arg value="stringBean1" />
</bean>
</beans>
Я добавил код в журнал всех имен бинов, которые загружаются при загрузке Spring.Но я не нашел ни одного bean-компонента с именами "xmlStringBean1" и "myController".
Также обратите внимание, что это приложение работает нормально, если я помещаю свой контроллер Rest и другие классы в ту же иерархию пакетов, что и класс загрузочного загрузчика Spring.