I migrated an application from spring-boot 3.3.6 to 3.4.2. We have below code to create a static resource locator:
@Bean
RouterFunction staticResourceLocator() {
return RouterFunctions.resources("/**", new FileSystemResource("/opt/cfg/static/"));
}
After the migration this code is throwing an exception: Failed to instantiate [org.springframewok.we.reactive.function.server.RouterFunction]: Factory method 'stticResourceLocator' threw exception with message: Resource location does not end with slash: /opt/cfg/static
I found that when FileSystemResource is created there is a call to StringUtils.cleanPath(path) where the last slash is removed from the original path.
is there another way to create the FileSystemResource and preserve the last slash?
Comment From: jhoeller
It's not actually StringUtils.cleanPath
itself, it's the getURL().getPath()
check that we do for Resource
there. Like for ClassPathResource
, we should explicitly check the given FileSystemResource.getPath()
instead. I've revised this for 6.2.4.
This will be available in the upcoming 6.2.4 snapshot. Feel free to give it an early try!