我试图设置一个Spring Boot,以便:
我已经足够轻松地完成了前两个工作,我可以得到" /"使用addViewControllers
轻松地路由到index.ftl,但是当我为/**
添加一个View Controller时,它会破坏我之前工作的资源处理程序。
我尝试过使用ViewControllerRegistry.setOrder()
和ResourceHandlerRegistry.setOrder()
并且只是拒绝合作。
正确的方法是什么?
编辑:Spring Boot配置:
该项目使用Kotlin编写,并使用Maven和spring-boot-maven-plugin
构建。我大部分时间都使用XML配置文件而不是Java,但我确实有一个Java配置类。
主要应用程序如下:
/**
* The main entry point to the application
*/
@EnableAutoConfiguration
@Configuration
@EnableAdminServer
@ImportResource(
"classpath:/spring/context.xml"
)
open internal class Application
/**
* Run the application
* @param args The command line arguments
*/
fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
/spring/context.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" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="clock" class="java.time.Clock" factory-method="systemUTC" />
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate" />
<import resource="users.xml" />
<import resource="authorization.xml" />
<import resource="authentication-google.xml" />
<bean class="uk.co.grahamcox.spring.MvcConfiguration">
</bean>
</beans>
MvcConfiguration看起来像:
/**
* Spring MVC Configuration
*/
@Configuration
open class MvcConfiguration() : WebMvcConfigurerAdapter() {
/**
* Add support for serving up static resources
*/
override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("classpath:/resources/")
.setCacheControl(CacheControl.noStore())
}
/**
* {@inheritDoc}
*
* This implementation is empty.
*/
override fun addViewControllers(registry: ViewControllerRegistry) {
registry.addViewController("/")
.setViewName("index")
}
}
根据addViewControllers
和registry.setOrder()
中addViewControllers
次调用的存在和值,向addResourceHandlers
添加此内容将会执行任何操作,否则会破坏资源处理程序:
registry.addViewController("/**")
.setViewName("index")