Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 当配置依赖于DAL项目的Web服务引导项目时,Spring引导日志记录和安全性似乎不起作用_Maven_Spring Boot - Fatal编程技术网

Maven 当配置依赖于DAL项目的Web服务引导项目时,Spring引导日志记录和安全性似乎不起作用

Maven 当配置依赖于DAL项目的Web服务引导项目时,Spring引导日志记录和安全性似乎不起作用,maven,spring-boot,Maven,Spring Boot,我不熟悉Spring Boot,对Java/Maven也不太熟悉,所以我很确定我在使用DAL项目和Web服务项目方面有一些基本的错误配置,但我很难弄清楚 如果我在这里的解释不充分,我可以附加.POM文件或添加更多代码——我希望Spring Boot高级用户可以帮助解决一些明显的问题。甚至建议打开更多日志记录,这样我就可以明白为什么Spring Boot认为在这种情况下必须登录到stderr了 我的基本设置是-我有两个Spring Boot项目: DAL项目。这使用Postgres/JPA来设置我

我不熟悉Spring Boot,对Java/Maven也不太熟悉,所以我很确定我在使用DAL项目和Web服务项目方面有一些基本的错误配置,但我很难弄清楚

如果我在这里的解释不充分,我可以附加.POM文件或添加更多代码——我希望Spring Boot高级用户可以帮助解决一些明显的问题。甚至建议打开更多日志记录,这样我就可以明白为什么Spring Boot认为在这种情况下必须登录到stderr了

我的基本设置是-我有两个Spring Boot项目:

  • DAL项目。这使用Postgres/JPA来设置我的数据库,并允许我们项目的路由组件在内部使用DAL。这会将DAL的所有存储库设置为不对外公开-例如:

    @RepositoryRestResource(collectionResourceRel=“user”,path=“user”,exported=false)
    公共接口用户存储库扩展了分页和排序存储库{
    }

  • 一个Web服务项目,它将处理任何业务逻辑并向最终用户公开端点。路由组件不需要这种逻辑。这还公开了REST端点,例如:

    @RestController
    @请求映射(value=“/auditentries”)
    @Api(value=“审计条目”,description=“审计条目Api”)
    公共类AudientryController扩展BaseController{
    }

  • 当我将Web服务作为Spring Boot应用程序运行时,端点被正确地公开,我可以使用REST客户端访问/auditentries或我配置的其他外部端点。DAL基本上也在使用Hibernate和Web服务使用的内部PagingAndSortingRepository类设置表。所以-这很好-项目设置的主要用例似乎可以正常工作

    然而,到目前为止,我已经注意到了两个问题——也许我遗漏了一些东西,但我甚至不知道如何调试它们,也不知道为什么在这些情况下Spring Boot会变得混乱:

  • 如果我为Web服务项目配置日志记录,那么Web服务项目的spring引导日志记录将立即以红色文本定向到stderr,而DAL项目的日志记录将适当地定向到日志文件。我在Web服务中使用logger.info插入的手动日志记录语句也正确地转到日志文件
  • 默认情况下,Spring引导日志记录到控制台,因此,即使配置了日志文件,本文末尾的日志记录也总是记录到控制台和stderr

  • 如果我试图在Web服务项目中启用安全性,Spring Boot将在所有端点上启用安全性,但它无法识别应该定义我的安全性的自定义类:

    @配置
    @启用Web安全性
    公共类WebSecurityConfig扩展了WebSecurityConfigureAdapter{
    }

  • 我相信这两个问题都与将DAL项目包含在Web服务项目的POM文件中有关,因为如果我将项目简化为基本上不再依赖DAL的spring boot项目(或做任何其他有趣的事情),我的安全配置类将被调用,而且日志记录似乎按照预期工作

    目前一个潜在的问题是DAL的POM文件和Web服务都明确包含大多数依赖项,如spring boot starter data rest、postgres、jpa等。也许Web服务应该完全依赖DAL的POM依赖项,但我并不认为这会导致错误,即使在两个项目中明确包含依赖项不是最佳实践

    为了让两个项目协同工作,我在DAL中是否有一个无效的假设,或者应该关闭一些spring配置?Spring引导是否可能不像两个项目都有REST端点,但只公开了一组端点?我如何在不诉诸试错/暴力的情况下调试这个问题

    下面是Web服务项目中的一些日志记录示例,即使配置了日志记录,这些日志记录也始终会发送到控制台:

    [main]INFO CNER.WS.App-使用PID 5072在mschwartz-w550s上启动应用程序(C:\dev\event\u router\server\WebServices\WS\target\classes由mschwartz在C:\dev\event\u router\server\WebServices\WS中启动) [main]INFO CNER.WS.App-以下配置文件处于活动状态:默认 [main]INFO org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext-刷新org.springframework.boot.context.embedded。AnnotationConfigEmbeddedWebApplicationContext@10feca44:启动日期[2016年3月25日星期五05:24:02 UTC];上下文层次结构的根 [main]INFO org.springframework.beans.factory.support.DefaultListableBeanFactory-使用不同的定义覆盖bean“beanNameViewResolver”的bean定义:替换[Root bean:class[null];scope=;abstract=false;lazyInit=false;autowireMode=3;dependencyCheck=0;autowireCandidate=true;primary=false;factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhiteLabeleErrorViewConfiguration;factoryMethodName=BeanNameResolver;initMethodName=null;destroyMethodName=(推断);在类路径资源[org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]]中用[Root bean:class[null]定义;scope=;abstract=false;lazyInit=false;autowireMode=3;dependencyCheck=0;autowireCandidate=true;primary=false;factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfiguration适配器;factoryMethodName=beanNameViewResolver;initMethodName=null;DestroymentMethodName=(推断);定义
    @ComponentScan(basePackages= {"repo", "wstest.controllers", "wstest.services", "wstest"})