Tag: 春天mvc

使用Spring MVC和Boot刷新静态内容

我正在评估Spring MVC&Boot和AngularJs构建Web应用程序。 我遇到了问题,当我修改我的静态内容(html,js,css)时,我不得不每次重新启动应用程序。 我希望有一个解决方法,因为重新启动整个应用程序的静态内容变化效率不高。 我试过的每个其他Web应用程序框架允许更新静态内容文件(即使只是Spring MVC和普通的旧WAR应用程序)。 我已经从“使用Spring Boot Actuator构建REST风格的Web服务”指南( http://spring.io/guides/gs/actuator-service/ )安装我的项目。 基本上它使用Spring Boot和MVC控制器来创建一个REST服务。 另外,我使用了“使用AngularJS使用REST风格的Web服务”( http://spring.io/guides/gs/consuming-rest-angularjs/ )来构建AngularJS的前端。 它创建一个显示REST服务响应的网页。 我做的唯一的改变是请求是由我的应用程序而不是“ http://rest-service.guides.spring.io/greeting ”。 我的静态内容存储在“src / main / resources / public”文件夹中。 除非不重新加载静态内容,否则此设置可以正常工作。

在Spring MVC 3中指定HTTP“位置”响应头的首选方法是什么?

在Spring MVC 3中指定HTTP“位置”响应头的首选方法是什么? 据我所知,Spring只会提供一个“位置”来响应重定向(“redirect:xyz”或RedirectView),但是也有一些场景应该和实体一起发送(例如,作为“201创建”的结果)。 恐怕我唯一的选择是手动指定它: httpServletResponse.setHeader("Location", "/x/y/z"); 它是否正确? 有没有更好的方法来解决这个问题?

将thymeleaf版本2.14迁移到3.0不能找到消息属性

Thymeleaf版本2.14正确拾取message.properties文件。 迁移到3.0之后,它给错误了hello.MESSAGE_en_US ??。 但在javacode通过自动装配messsagesource messageSource.getMessage( "hello.MESSAGE",null, Locale.getDefault()) ->Hello App 项目结构 src/main/ -java -com.cando -controllers -resources -messages_en.properties -spring.properties -webapp -WEB-INF -templates -index.html 的index.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <title>Helllo</title> </head> <body> <p th:text="#{hello.MESSAGE}">Hello App!</p> </body> </html> messages_en.properties hello.MESSAGE=Hello App 配置 @Bean public ResourceBundleMessageSource messageSource() { ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource(); resourceBundleMessageSource.setBasename("messages"); resourceBundleMessageSource.setBasename("spring"); return resourceBundleMessageSource; }

使用@ExceptionHandler处理spring安全认证异常

我使用Spring MVC的@ControllerAdvice和@ExceptionHandler来处理REST API的所有异常。 它适用于web mvc控制器抛出的异常,但对于Spring安全自定义筛选器引发的异常无效,因为它们在调用控制器方法之前运行。 我有一个自定义的春季安全过滤器,执行基于令牌的身份验证: public class AegisAuthenticationFilter extends GenericFilterBean { … public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { try { … } catch(AuthenticationException authenticationException) { SecurityContextHolder.clearContext(); authenticationEntryPoint.commence(request, response, authenticationException); } } } 有了这个自定义的入口点: @Component("restAuthenticationEntryPoint") public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint{ public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authenticationException) throws […]

Spring代理类和Kotlin中的空指针异常

我和春天一起面临着kotlin的一些问题。 我有一个控制器bean(没有接口btw),它有一个自动连线的服务bean通过主构造函数。 它工作完美,除非我使用控制器缓存注释。 显然弹簧缓存生成一个委托类下的缓存处理。 我的代码如下所示: @RestController @RequestMapping("/regions/") open class RegionController @Autowired constructor(val service: RegionService) { @RequestMapping("{id}", method = arrayOf(RequestMethod.GET)) @Cacheable(cacheNames = arrayOf("regions")) fun get(@PathVariable id: Long): RegionResource { return this.service.get(id) } } 现在的问题是执行该方法时出现空指针异常,实际上this.service为null ,在技术上是不可能的,因为它是kotlin中的非null变量。 我假设Spring生成的类代理使用空值而不是autowired bean初始化类。 这一定是使用kotlin和spring的常见错误。 你是怎么回避这个问题的?

如何禁用RepositoryRestHandlerMapping和EndpointHandlerMapping?

我目前正在使用Spring Boot,Hibernate和Spring-HATEOAS构建一个带有REST接口的应用程序。 我的数据模型被定义为具有@Entity批注的bean,我使用Spring的特性来自动设置一个Hibernate仓库(创建一个扩展PagingAndSortingRepository的界面)。 我的应用程序完全是注解驱动的,也就是说,我没有web.xml但是使用@Configuration @Bean , @Configuration @Bean等Spring注解来配置所有的东西,并且在SpringApplication.run(MyApp.class, args);的帮助下从我的main方法启动应用程序SpringApplication.run(MyApp.class, args); 这工作正常,但通过这种方法,创建了一个RepositoryRestHandlerMapping和EndpointHandlerMapping 。 这些创造了一堆我既不需要也不想要的资源。 我实现我自己的控制器,因为他们需要做比标准的逻辑更多。 我怎样才能防止这种默认行为,并禁用这些映射?

测试Spring的@Async void返回方法

我在我的Spring应用程序中返回void (或Unit ,我正在写Kotlin)的@Async方法有点问题。 我不知道为什么,但是当@Async方法返回void它只是不执行,或者至少它不会做它应该的。 需要说的是,在我的异步方法中,我想用JavaMailSender发送一封邮件,所以没什么大不了的。 这里是方法: @Async override fun sendEmail(locale: Locale, subject: String, message: String, to: String) { val msg = sender.createMimeMessage() println("1") val helper = MimeMessageHelper(msg, true, "utf-8") helper.setFrom("email@example.com") helper.setTo(to) println("2") helper.setSubject(getSubject(locale, null)) println("3") helper.setText(processTemplate(locale, null, null), true) println("4") sender.send(msg) println("5") } 但电子邮件永远不会来,没有异常记录(我正在运行testNG测试)。 当我改变函数的签名使其返回Future<String>并在函数的末尾添加一些虚拟的返回行,然后调用service.sendEmail(…).get() ,方法的主体以奇迹般的方式执行和电子邮件到达。 在我的@Configuration类中,有@EnableAsync 。 我还实现了AsyncConfigurer并提供了自己的执行程序和异常处理程序,因为我认为它可能是我的执行程序bean定义的东西,但没有任何帮助。 这让我疯狂,因为我只是想在后台默默地执行一些东西,而且不起作用。 我默默地说,我不想被内部抛出的异常所困扰。 你有什么想法吗? 更新:所以建议@pleft,我在我的方法中打印一些打印。 现在,当我运行mvn clean […]

Spring使用OAuth令牌进行社交登录

道歉,我最近主要在iOS上工作,而且自从和Spring一起工作以来,我一直都是这么做的。 工具: 科特林 春季启动 春天的社交 问题: 我正在构建一个允许典型的“使用Facebook登录”类型功能的应用程序。 我想将iOS客户端获得的OAuth令牌发送到后端进行身份验证。 如果令牌有效,则后端将返回成功的认证,否则指示无效的凭证。 使用OAuth令牌登录后,将检索一些配置文件信息。 题: 大多数“入门指南”似乎都遵循使用用户名和密码凭证的OAuth身份验证。 使用Spring Social + Facebook,我该如何: 使用OAuth访问令牌进行身份验证并检索配置文件数据?

Spring MVC – 如何绑定布尔变量中的HTML复选框值

我对春天的mvc世界很陌生。 我试图从HTML表单复选框发送布尔值。 当用户选中复选框时,它将发送true,否则返回false。 <form class="attendanceBook" role="form" method="post" action="/attendances"> <div class="row"> <div class="form-group"> <div class="col-xs-4"> <label class="control-label">Check Here</label> </div> <div class="col-xs-4"> <input type="checkbox" name="i" id="i" value="true" /> </div> <div class="col-xs-4"> <input type="submit" value="Click"/> </div> </div> </div> </form> 一些googilng 后 ,我发现这个帖子 ,它说, standard behaviour is the value is only sent if the checkbox is checked. 所以我知道,如果选中复选框,表单将提交复选框的值,否则不会提交。 当未选中复选框时,数据类中的初始化值将生效。 […]

以编程方式重新启动Spring Boot应用程序/刷新Spring上下文

我试图以编程方式重新启动我的Spring应用程序,而无需用户介入。 基本上,我有一个页面,允许切换应用程序的模式(实际上意味着切换当前活动的配置文件),据我所知我必须重新启动上下文。 目前我的代码非常简单,只是重启位(顺便说一下,这是Kotlin): context.close() application.setEnvironment(context.environment) ClassUtils.overrideThreadContextClassLoader(application.javaClass.classLoader) context = application.run(*argsArray) 然而,我做context.close()的时候立即存在JVM。 我也尝试了context.refresh()但似乎只是简单地杀死Tomcat / Jetty(尝试两个,以防万一它是一个Tomcat的问题),然后没有任何反应。 我也看到以编程方式重新启动Spring Boot应用程序,但从这些答案似乎没有任何工作。 此外,我看了一下据说具有/restart端点的弹簧执行器,但这似乎不再存在? 帮助将不胜感激。 谢谢。