相关疑难解决方法(0)

如何选择Spring Boot webapp的URL?

我使用Spring Boot创建一个Web应用程序,我不知道如何将URL更改localhost:8080为类似的东西localhost:8080/myWebApp.

我看到很多资源在线引用application.properties文件并将其添加到类路径中.但是,我不确定究竟放在哪里.

问题

  • 在我的src/main/resources

  • 我如何在文件中分配URL?

url web-applications spring-boot

47
推荐指数
4
解决办法
8万
查看次数

从抽象类继承注释?

我可以以某种方式在抽象类上对一组注释进行分组,并且扩展此类的每个类都自动分配了这些注释吗?

至少以下不起作用:

@Service
@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
class AbstractService


class PersonService extends AbstractService {
    @Autowired //will not work due to missing qualifier annotation
    private PersonDao dao;
}
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection

18
推荐指数
2
解决办法
1万
查看次数

如何为所有控制器配置默认的@RestController URI前缀?

我知道你可以设置server.contextPathin application.properties来改变根上下文.

另外,我可以在Spring Boot的应用程序配置中添加一个额外的上下文,如下例(在Groovy中),为根上下文的URL映射添加"/ api":

@Bean
ServletRegistrationBean dispatcherServlet() {
     ServletRegistrationBean reg = new ServletRegistrationBean(new DispatcherServlet(), "/")
        reg.name = "dispatcherServlet"
        reg.addInitParameter("contextConfigLocation", "")
        reg.addUrlMappings("/api/*")
        reg.loadOnStartup = 2
        reg
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试为Web服务调用提供一个单独的基本URI"/ api",我可以利用它来保证安全性等.但是使用上述方法将意味着可以通过以下方式访问我的任何URI,无论是否使用Web服务"/"或"/ api",并没有提供具体的隔离.

是否有人知道@RestController使用配置为所有(s)设置基本路径的更好方法,而不必使用/ api /正式为每个控制器添加前缀?如果我被迫手动为每个控制器的URI添加前缀,则可能会错误地省略它并绕过我特定于Web服务的安全措施.

这是Stack Overflow中对同一类型问题的引用,该问题从未得到完全回答:

Spring Boot:为RestControllers配置url前缀

java groovy spring-mvc spring-boot

12
推荐指数
4
解决办法
1万
查看次数

如何为swagger 2.8.0做友好的基本网址

我正在尝试更改 API 文档的基本访问 url。网址是“ http://localhost:8080/swagger-ui.html ”。我想得到类似“ http://localhost:8080/myapi/swagger-ui.html ”的东西。

我使用的是 Springfox 2.8.0 Swagger、Java 8、Spring Boot 2.0 的 swagger 配置是:

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Bean
    public Docket api(ServletContext servletContext) {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathProvider(new RelativePathProvider(servletContext) {
                    @Override
                    public String getApplicationBasePath() {
                        return "/myapi";
                    }
                })
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(Predicates.not(PathSelectors.regex("/error")))
                .build()
                .useDefaultResponseMessages(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

自定义路径提供程序必须提供帮助,但我仍然可以通过使用 url“ http://localhost:8080/swagger-ui.html ”访问 api 文档。如果我使用 url " http://localhost:8080/myapi/swagger-ui.html ",我会收到404 错误。看看下面的截图。

在此处输入图片说明

java rest swagger spring-boot springfox

9
推荐指数
2
解决办法
2万
查看次数

如何仅为休息控制器更改基本URL?

是否有任何配置选项允许仅为其他控制器更改基本URL,例如,如果我的api的基本URL是www.example.com/user/{id},则变为www.example.com/rest/user/{id}?

我使用的是spring boot v1.3.2

我尝试创建自定义注释,通过添加RequestMapping扩展RestController.这是一个例子,但它不起作用.

@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
@RestController 
@RequestMapping(value = "/rest", path = "/rest") 
public @interface MyRestController { }
Run Code Online (Sandbox Code Playgroud)

java spring-boot

8
推荐指数
2
解决办法
2万
查看次数

在实现Spring控制器时共享公共父路径

我希望能够定义一个父控制器类,它将具有"/ api"的映射,然后使用我的不同实现扩展该控制器.所以ApiController会有:

@Controller
@RequestMapping("/api")
Run Code Online (Sandbox Code Playgroud)

例如,我的用户控制器应扩展基本api控制器并在路径中添加"/ users",因此它将回答"/ api/users"请求.所以UserController将具有:

@Controller
@RequestMapping("/users")
Run Code Online (Sandbox Code Playgroud)

但由于它扩展了ApiController,它将有效地回答/ api/users.

当然,我可以在所有控制器之前添加"/ api",这样就可以在没有父类的情况下实现,但是如果可能的话,我更喜欢"正确的方式",这样我就可以用更清晰,更明显的方式定义我的api实现路径.

我尝试扩展ApiController基类,但这不起作用,UserController仍然回答"/ users"并忽略基类"/ api".

api rest spring controller

7
推荐指数
1
解决办法
4651
查看次数