我是Java和Spring的新手.如何将我的应用程序根映射http://localhost:8080/
到静态index.html
?如果我导航到http://localhost:8080/index.html
它的工作正常.
我的app结构是:
我config\WebConfig.java
看起来像这样:
@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/");
}
}
Run Code Online (Sandbox Code Playgroud)
我试图添加registry.addResourceHandler("/").addResourceLocations("/index.html");
但它失败了.
我有控制器映射到/user
和/order
:
@RestController
@RequestMapping("/users")
public class UserController {
...
}
@RestController
@RequestMapping("/orders")
public class OrderController {
...
}
Run Code Online (Sandbox Code Playgroud)
我想分别通过URL访问这些http://localhost:8080/api/users
和http://localhost:8080/api/orders
.
我如何在Spring Boot中实现这一目标?
我已经通过创建扩展RepositoryRestMvcConfiguration的Java配置类并将@RestResource添加到存储库,将Spring Data Rest(2.0)添加到现有的Spring MVC应用程序中.
是否可以更改Rest API的基本URL?例如:
http://localhost:8080/rest/customers
Run Code Online (Sandbox Code Playgroud)
代替
http://localhost:8080/customers
Run Code Online (Sandbox Code Playgroud)
我尝试使用setBaseURI覆盖configureRepositoryRestConfiguration,但它似乎不适用于响应中的所有链接.
设置如下 - 我有一个定时任务,将发送验证电子邮件,以便用户:
@Scheduled(cron = " 0 0-59/1 * * * * ")
public void sendVerificationEmails() {
//...
}
Run Code Online (Sandbox Code Playgroud)
在那些电子邮件中,我需要包含一个返回同一webapp的链接.但是我找不到任何关于如何在没有servlet上下文的情况下获取应用程序基本URL的引用.
奖金
如果我可以在这里设置百万富翁模板解析器来处理这些链接也会有所帮助,但为此我需要一个WebContext
需要一个实例的HttpServletRequest
.
我尝试使用许多配置部署我的站点,以使其从正在部署的战争名称进行更改.有没有办法轻松做到这一点.部署将在一个tomcat坐在其他地方.例如bitnami实例
我在application.properties中尝试了各种设置组合,但没有任何区别:
server.servlet.context-path=/a
server.servlet.path=/b
spring.webservices.path=/c
server.contextPath=/m
Run Code Online (Sandbox Code Playgroud)
战争称为demo-0.0.01-SNAPSHOT.war,当放入webapps目录时,它会创建相同的命名目录,然后该站点有一个/demo-0.0.01-SNAPSHOT路径.我认为Spring Boot的日子现在很容易,但像我这样的傻瓜还没有解决.或者人们只是使用tomcats部署嵌入式版本并立即运行它们?
(顺便说一句,我也尝试了root.xml,没有运气......除非我在我的Windows机箱上做错了,先在我的开发盒上进行测试,然后在linux上进行部署)
任何帮助,将不胜感激.
谢谢
我试图找到它,但我发现了许多不同的场景,但不是这个。
我想要做的是为 com.myproject.api 下控制器中的所有路由添加“/api/”前缀。我希望包 com.myapp.api 下的所有控制器都使用“/api/*”,而 com.myapp.web 下的所有控制器都没有前缀
Spring / Spring Boot 有可能吗?
跑步时
./mvnw spring-boot:run
Run Code Online (Sandbox Code Playgroud)
当前的Spring Boot应用程序可以在浏览器中使用当前URL打开
http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)
但不是
http://localhost:8080/AppName
Run Code Online (Sandbox Code Playgroud)
因此,即使在Swagger中,API也必须像这样检索
http://localhost:8080/api/swagger.json
Run Code Online (Sandbox Code Playgroud)
代替这个
http://localhost:8080/AppName/api/swagger.json
Run Code Online (Sandbox Code Playgroud)
那么如何AppName
在上下文中添加?在以前的web.xml基于xml的日子里很容易,在基于Java的配置中我添加了
spring.application.name=AppName
Run Code Online (Sandbox Code Playgroud)
但仍然无法解决问题。
java ×6
spring ×6
spring-boot ×6
deployment ×1
servlets ×1
spring-mvc ×1
thymeleaf ×1
tomcat ×1