在我的spring启动应用程序中,当我在服务层类上添加@PreAuthorize("hasAuthority('ADMIN')")时,它被注入到UserDetailService实现类中,我收到一个错误"这个对象已经被构建了".如果我应用方法安全性,在任何其他服务类上,它们工作正常.
堆栈跟踪的一部分
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'multiHttpSecurityConfig': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.autoever.ess.sy.repository.CustomUserDetailsService org.autoever.ess.config.MultiHttpSecurityConfig.customUserDetailsService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customUserDetailsServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.autoever.ess.sy.service.UserMgmt org.autoever.ess.sy.repository.impl.CustomUserDetailsServiceImpl.userMgmt; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMgmt' defined in file [D:\workspace\luna\haei\ess\target\classes\org\autoever\ess\sy\service\UserMgmt.class]: Initialization of …
Run Code Online (Sandbox Code Playgroud) 我搜索并找到了一些Java的图像缩放库.但不确定与哪一个相关.我需要从服务器上传的图像生成缩略图.
如果你能分辨哪一个好坏,那就太好了.
我的清单是:
如何在spring boot应用程序中设置活动配置文件 此应用程序将部署在独立的Tomcat中.
我有2个属性文件application- {profile} .properties.
我的应用程序类
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "dev");
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用嵌入式tomcat运行应用程序,dev配置文件将设置为活动状态,并且工作正常.但是当我单独部署tomcat时.这是行不通的.
我尝试在configure方法中设置活动配置文件.但是当我从上下文中获取环境时,我得到空指针异常.
有关如何设置活动配置文件的任何帮助.
我有一个 Spring boot API 服务,其他网站和移动应用程序调用此 API 来获取数据和图像。图像存储在文件系统中,文件路径存储在数据库中。我正在寻找在 API 响应中返回图像 URL 的最佳实践。
示例数据库记录
+-----+-------+-----------------+
| Id | Name | profile_img_url |
+-----+-------+-----------------+
| 1 | John | /image/john.jpg |
| 2 | Jane | /image/jane.jpg |
| 3 | Doe | /image/doe.jpg |
+-----+-------+-----------------+
Run Code Online (Sandbox Code Playgroud)
例如我有一个会员API。
https://example.com/get/member/id
Run Code Online (Sandbox Code Playgroud)
该API将返回JSON,其中包含会员图像URL
我应该返回 profile_img_url 作为绝对 URL 还是相对 URL
这是我的想法
带相对 URL 的响应
{
"name" : "John",
"profile_img_url": "/image/john.jpg",
}
Run Code Online (Sandbox Code Playgroud)
使用绝对 URL 进行响应
{
"name" : "John",
"profile_img_url": "https://example.com/image/john.jpg",
}
Run Code Online (Sandbox Code Playgroud)
在我的 API 中,我需要查找主机名并连接每个请求的文件路径,从而导致 API …
在延迟加载的功能模块和功能子模块中使用核心模块服务的最佳做法是什么.
根据Angular样式指南,我有以下内容
app
-core
- core.module.ts
-logger.service.ts
-token-interceptor.service.ts
-authentication.service.ts
-shared
-shared.module.ts
-base module (my feature base , lazy loaded with router-outlet)
-base.module.ts
-base.routing.module.ts
-base
-base.component.ts
-admin (lazy loaded , child module of base module)
-admin.module.ts
-admin.routing.ts
-admin-component.ts
-report(lazy loaded , child module of base module, sibling of admin)
-report.module.ts
-report.routing.ts
-report-component.ts
Run Code Online (Sandbox Code Playgroud)
如果我在所有功能模块中添加TokenInterceptorService作为提供程序,那么HTTP拦截器可以正常工作.当我在App模块中添加它时(但不是在延迟加载的功能模块中)它不会拦截延迟加载的功能模块中触发的http请求.
使用核心模块中声明的服务/拦截器的最佳实践是什么?
app.module.ts
@NgModule({
declarations: [
AppComponent,
LoginComponent,
],
imports: [
BrowserModule,BrowserAnimationsModule, CoreModule, AppRoutingModule, FormsModule
], providers: [{ provide: HTTP_INTERCEPTORS, useClass: TokenInterceptorService, multi: true }],
bootstrap: [AppComponent]
})
export …
Run Code Online (Sandbox Code Playgroud) 我的要求是在表格提交/发布时在我的角度js app中显示(新标签)/下载/嵌入PDF.
我不希望服务器返回生成的PDF的唯一标识符,而是使用$ window服务打开一个新窗口,其中url指向服务器端端点,该端点根据唯一标识符返回PDf.因为我需要动态生成pdf(不存储在文件系统中).
类似的问题AngularJS:在角应用程序中显示blob(.pdf) 但它不适合我.
我的控制器
angular.module('EvaluationResultsModule').controller('CA_EvaluationResultsCtrl',
[ '$scope', 'EvaluationResultsService', '$sce', function($scope, EvaluationResultsService, $sce) {
$scope.showPDF = function() {
$scope.result = CA_EvaluationResultsService.getEvalutaionResultPDF($scope.evaluationResults);
$scope.result.$promise.then(function(data) {
var file = new Blob([data], {
type : 'application/pdf'
});
var fileURL = URL.createObjectURL(file);
$scope.pdfContent = $sce.trustAsResourceUrl(fileURL);
});
}
} ]);
Run Code Online (Sandbox Code Playgroud)
我的服务
angular.module('EvaluationResultsModule').factory('EvaluationResultsService', function($resource) {
return $resource('./api/ca/evaluationResults/:dest', {}, {
getEvalutaionResultPDF : {
method : 'GET',
params : {
dest : "getPDF"
},
responseType : 'arraybuffer',
}
});
});
Run Code Online (Sandbox Code Playgroud)
休息控制器方法
@RequestMapping(value = "/getPDF", method = …
Run Code Online (Sandbox Code Playgroud) 我在tomcat服务器日志中收到此错误"log4j:ERROR无法重命名".我的log4j XML中有多个DailyRollingFileAppender.每个appender指向不同的文件.只有一个应用程序实例正在运行.我使用了Handle实用程序并运行命令(以日志文件名作为参数)
处理-f ams-app.log,结果是Tomcat7.exe pid:5032类型:文件54C:E:\ apps\ams\logs\ams-app.log
从这里我假设文件只有一个锁.我的环境Windows Server 2008,tomcat 7.0和Java 6以及slf4j-log4j12(1.5.6)
当在AIX服务器上托管相同的应用程序时,不会发生此问题.我搜索了这个问题,似乎是windows specfic.此外,我并不热衷于使用DatedFileAppenders或任何分叉的log4j.logback是否解决了这些问题.任何关于如何解决这个问题的建议表示赞赏.谢谢
这里是我的log4j xml
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE_APPENDER" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="DEBUG"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m %n"/>
</layout>
</appender>
<appender name="APP_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="datePattern" value="yyyy-MM-dd"/>
<param name="file" value="E:/apps/ams/logs/ams-app.log"/>
<param name="append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m %n"/>
</layout>
</appender>
<appender name="SQL_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="datePattern" value="yyyy-MM-dd"/> …
Run Code Online (Sandbox Code Playgroud) 我是maven和Jenkins的新手,我正在尝试建立一个maven 3项目.我在驱动器中有maven,我将存储库移动到d驱动器.但是当我在Jenkins中配置构建时,它正在创建自己的存储库(我想是这样)现在如何配置jenkis,以便它可以在D盘中使用我的存储库.
希望我有道理.
我有一个由 spring security 保护的 spring MVC RESTful 应用程序。客户端是 Angular JS。但是我的登录和注销页面是普通的 jsp,我执行基于表单的登录和注销。成功完全认证后,我加载我的安全页面(它使用 anlgularJS 和 RESTful api)。
调用 REST api 时,我需要帮助处理 AuthenticationException 和 AccessDeniedException。我扩展了 ResponseEntityExceptionHandler 并且我能够捕获 AccessDEniedException 并抛出一个 json 响应。我理解处理 AuthenticationException (所以我可以在剩余请求的情况下停止 302 重定向)我需要扩展 ExceptionTranslationFilter。我发现的大多数示例都使用 XML 配置。但是可以在 Java config 中做吗?
我确实编写了一个组件来扩展 ExceptionTranslationFilter 并创建了一个自定义的 AuthenticationEntryPoint,但我不确定如何将它注入我的 ExceptionTranslationFilter
我收到一个错误,由:java.lang.IllegalArgumentException: authenticationEntryPoint must be specified 我尝试添加一个构造函数,但找不到 thors 方法。任何帮助解决表示赞赏。
我的身份验证入口点
@Service
public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException arg2)
throws IOException, ServletException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED,
"Unauthorized.");
}
}
Run Code Online (Sandbox Code Playgroud)
我的异常翻译过滤器
@Component
public class …
Run Code Online (Sandbox Code Playgroud) 我有一个带弹簧安全装置的弹簧靴应用程序.一切都很好.但是如果用户帐户被锁定,我如何将消息显示为帐户锁定,而不是无效的用户名和密码.
我的登录表单
<div class="panel-body">
<div class="row text-center">
<div th:if="${param.error}">Invalid user name and password.</div>
<div th:if="${param.logout}">You have been logged out.</div>
</div>
<div class="row">
<form class="form-horizontal" role="form" th:action="@{/login}" method="post">
<div class="form-group">
<label class="col-md-4 control-label"> User Name </label>
<div class="col-md-6"><input type="text" name="username" />
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label"> Password </label>
<div class="col-md-6"><input type="password" name="password" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-6">
<input type="submit" value="Sign In" class="btn btn-primary" />
</div>
</div>
</form>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
安全配置
@Configuration
public static class FormLoginWebSecurityConfigurerAdapter extends …
Run Code Online (Sandbox Code Playgroud) 我有一个Spring Boot,Spring Data JPA(休眠)Web应用程序,想要引入文本搜索功能。
我了解以下内容
休眠搜索或spring-data- *都可以集成到我的应用中
休眠搜索可以与嵌入式Lucene或外部弹性搜索一起使用。
外部弹性搜索/ Solr有其自身的优势,但我可以接受
嵌入式也从这里开始。
我的问题
hibernate-search spring-data spring-data-jpa spring-data-solr spring-data-elasticsearch
我想知道不使用任何插件/库,是否可以格式化引导日期输入格式。我的网络服务将返回 ISO.DATE 模式 = "yyyy-MM-dd",并且引导程序以 MM/DD/YYYY 格式显示它。我想把它改成 DD/MM/YYYY 格式。
有可能吗?我用谷歌搜索,每个人似乎都在使用某个图书馆。由于我的要求很简单,我不想使用任何库。或者你认为需要一个图书馆。任何帮助表示赞赏。
<div class="form-group">
<label for=displayFrom class="col-md-3 control-label"> Date </label>
<div class="col-md-4">
<form:input type="date" class="form-control" path="displayFrom" id="displayFrom"
placeholder="display From"/>
</div>
<div class="col-md-5 iserror">
<form:errors path="displayFrom"></form:errors>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) spring-boot ×3
rest ×2
spring ×2
angular ×1
angularjs ×1
api ×1
assets ×1
date ×1
format ×1
java ×1
jenkins ×1
json ×1
lazy-loading ×1
log4j ×1
maven ×1
pdf ×1
repository ×1
routes ×1
spring-4 ×1
spring-data ×1
spring-mvc ×1
thymeleaf ×1
tomcat7 ×1
tomcat8 ×1