Gun*_*hah 4 java spring mustache spring-boot
我是 Spring boot 的新手,我想实现简单的 Web 应用程序,它使用一些 Mustache 模板呈现 UI。
我编写了一些 Spring 组件(控制器、DAO、服务),它们的包结构不同(不属于 Spring boor runner 类的同一目录或子目录)。所以我使用@ImportResource注释来声明 spring 配置。但我的应用程序没有读取任何配置文件。
请参阅下面的代码片段了解更多详细信息
这里不是说, Spring boot 应用程序启动器类编写在 package 中SpringPropertyReaderApplication。
ApplicationConfiguration类是在相同的分层包结构下编写的,该结构使用注释定义了更多配置@ImportResource。
包com.example.launcher;
Run Code Online (Sandbox Code Playgroud)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("------------------------------------------------"); } }
包 com.example.launcher.configuration;
Run Code Online (Sandbox Code Playgroud)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 启动器类不在同一包中的服务和控制器。
Run Code Online (Sandbox Code Playgroud)<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 boot 加载的所有 bean 名称。但我没有找到任何名称为“xmlStringBean1”和“myController”的bean。
另请注意,如果我将 Rest 控制器和其他类放在与 Spring boot 启动器类相同的包层次结构下,则此应用程序可以正常工作。
因为,application-context.xml 位于 下的 spring 文件夹内src/main/resources。但是 中定义的 @ImportResource 注释ApplicationConfiguration.java尝试在根路径内扫描它。因此,未检测到该文件。
@ImportResource(locations = {"classpath*:application-context.xml"})
Run Code Online (Sandbox Code Playgroud)
替换为
@ImportResource(locations = {"classpath:spring/application-context.xml"}) .
Run Code Online (Sandbox Code Playgroud)
这将强制框架在 spring 目录中搜索 application-context.xml (从根级别开始)。
| 归档时间: |
|
| 查看次数: |
16539 次 |
| 最近记录: |