小编mat*_*sev的帖子

为Spring @Scheduled提供时区?

如何为基于Spring的@Scheduled cron作业配置时区?

背景:

我有一份工作,每天执行一次,比如说下午2点,使用Spring的@Scheduled注释:

@Scheduled(cron = "0 0 14 * * *")
public void execute() {
    // do scheduled job
}
Run Code Online (Sandbox Code Playgroud)

问题是不同服务器之间的下午2点不同,因为Spring在TimeZone.getDefault() 内部使用.而且,JavaDocTimeZone.getDefault() 状态表明:

获取此主机的默认TimeZone.默认TimeZone的来源可能因实施而异.

换句话说,不确定时区.它可能取决于JVM实现,服务器时区配置,服务器位置和/或其他未知因素.因此,cron作业在不同服务器上的不同时间触发,除非有办法明确设置应该使用哪个时区?

我使用的是Spring 3.2.2.


更新

截至春季4,Spring Jira问题SPR-10456已经解决.因此,@Scheduled注释具有新的区域属性,正是出于此目的.

java cron timezone spring scheduling

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

HTTP状态202 - 如何提供有关异步请求完成的信息?

当服务器返回202 - Accepted异步请求的状态代码时,为请求完成提供估计的适当方法是什么?

HTTP规范(我添加的斜体):

202接受

该请求已被接受处理,但处理尚未完成.[...]

返回此响应的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计.

以下是一些想法:

  • 我已经查看了max-age指令,但使用它会滥用Cache-Control吗?
  • 返回响应正文中的预期等待时间?
  • 添加特定于应用程序的X-响应标头,但X-RFC 6648中不推荐使用标头?
  • 添加(非X-)特定响应标头?如果是这样,它应该如何命名?SO问题自定义HTTP标头:命名约定给出了一些想法,但在弃用之后它只回答了如何格式化HTTP标头,而不是如何命名它们.
  • 其他建议?

rest http-status-codes http-headers

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

多模块Spring Boot项目中的Gradle依赖插件

什么是正确的摇篮配置看起来像在使用该插件摇篮多模块项目spring-boot-dependenciesspring-boot

我有以下项目设置:

parent
  |
  + build.gradle
  |
  + alpha
  |   |
  |   + build.gradle
  |
  + beta
  |   |
  |   + build.gradle
Run Code Online (Sandbox Code Playgroud)
  • parent模块包含常见的项目配置.
  • alpha模块是一个模块,我想在其中使用spring-boot-dependencies bom中指定的版本号导入依赖项,但结果是标准jar.
  • beta模块是一个依赖的模块,alpha结果是一个可执行的Spring Boot jar文件(包括所有依赖项).因此,该项目既需要插件spring-boot-dependencies也需要spring-boot插件.

为了保持Gradle文件DRY,我已经将常用模块脚本提取到父build.gradle文件中.

尝试$ gradle build使用下面的项目配置执行会导致:

> Plugin with id 'io.spring.dependency-management' not found.
Run Code Online (Sandbox Code Playgroud)

parent gradle.build

allprojects {
    group = "com.example"
    version '0.0.1-SNAPSHOT'

    ext {
        dependencyManagementPluginVersion = '0.5.3.RELEASE'
        springBootVersion = '1.3.0.RC1'
    }

    apply plugin: …
Run Code Online (Sandbox Code Playgroud)

dependency-management gradle spring-boot spring-boot-gradle-plugin

19
推荐指数
1
解决办法
9109
查看次数

自动装配由EasyMock工厂方法生成的bean?

我有一个看起来很奇怪的问题.我有以下设置:

界面:

package com.example;

public interface SomeDependency {
}
Run Code Online (Sandbox Code Playgroud)

弹簧组件:

package com.example;

@Component
public class SomeClass {
}
Run Code Online (Sandbox Code Playgroud)

带有由EasyMock生成的模拟bean的spring test配置:

<beans ....>
    <context:component-scan base-package="com.example"/>

    <bean id="someInterfaceMock" class="org.easymock.EasyMock" factory-method="createMock">
        <constructor-arg value="com.example.SomeDependency" />
    </bean> 
</beans>
Run Code Online (Sandbox Code Playgroud)

并进行单元测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/testconfig.xml")
public class SomeClassTest {

    @Autowired
    SomeClass someClass;

    @Autowired
    SomeDependency someDependency;

    @Test
    public void testSomeClass() throws Exception {
        assertNotNull(someClass);
    }

    @Test
    public void testSomeDependency() throws Exception {
        assertNotNull(someDependency);
    }
}
Run Code Online (Sandbox Code Playgroud)

项目编译并且测试通过没有任何问题,即SomeClass("真实"对象)和SomeDependency(由EasyMock生成的模拟对象)的自动装配成功.

但是,如果我将SomeClass的实现更改为:

@Component
public class SomeClass { …
Run Code Online (Sandbox Code Playgroud)

java spring easymock factory-method autowired

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

Spring嵌入式数据库是否支持不同的SQL方言?

H2具有一系列兼容模式,适用于支持不同SQL方言的各种其他数据库,如MS SQL Server,MySQL,Oracle等.但是,在Spring中设置嵌入式数据库时,我找不到任何相应的设置.这是否意味着如果我在生产中使用Oracle而在测试期间使用H2,那么我必须使用没有任何方言特定功能的"普通"SQL?我忽略了什么吗?

java spring h2 embedded-database

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

在Jenkinsfile中配置includedRegions?

如果使用特定子目录中的文件更改,我如何才能将Jenkins管道项目的范围限制为仅构建Jenkinsfile

我有一个包含两个目录的Git存储库.每个目录都包含一个单独的子项目,我想用Jenkins分别构建每个子项目Jenkinsfile.该项目具有以下文件结构:

parent
 |
 +- subA
 |   |
 |   + Jenkinsfile
 |   + more files related to sub project A
 |
 +- subB
     |
     + Jenkinsfile
     + more files related to sub project B
Run Code Online (Sandbox Code Playgroud)

JenkinsfilesubA具有以下配置:

checkout scm: [
    $class: 'GitSCM',
    branches: [[name: '*/master']],
    userRemoteConfigs: [[url: 'https://[path]/parent.git']],
    extensions: [[
        $class: 'PathRestriction', includedRegions: 'subA/.*'
    ]]
]
Run Code Online (Sandbox Code Playgroud)

JenkinsfilesubB相似,唯一的区别是,它已指定subBincludedRegions.

在Jenkins服务器中,我创建了两个管道项目并Jenkinsfile分别指向它们.如果在文件夹中更改了文件subA,则会触发Jenkins管道项目A,如果在文件夹中更改了文件subB,则会触发Jenkins管道项目B,这是我所期望的.

问题是如果文件被更改,也会触发Jenkins管道项目A subB …

jenkins jenkinsfile

13
推荐指数
1
解决办法
2668
查看次数

Spring Boot自定义http错误响应?

如果Spring Boot Web应用程序中发生异常,如何自定义响应状态代码和响应正文中的数据?

我创建了一个Web应用程序,如果由于某些错误的内部状态而发生意外情况,则会引发自定义异常.因此,触发错误的请求的响应主体看起来像:

HTTP/1.1 500 Internal Server Error
{
    "timestamp": 1412685688268,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.example.CustomException",
    "message": null,
    "path": "/example"
}
Run Code Online (Sandbox Code Playgroud)

现在,我想更改状态代码并在响应正文中设置字段.在我脑海中浮现的一个解决方案是:

@ControllerAdvice
class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    ErrorMessage handleBadCredentials(CustomException e) {
        return new ErrorMessage("Bad things happened");
    }
}

@XmlRootElement
public class ErrorMessage(
    private String error;

    public ErrorMessage() {
    }

    public ErrorMessage(String error) {
        this.error = error;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error; …
Run Code Online (Sandbox Code Playgroud)

java rest error-handling spring-boot

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

jQuery fadeIn事件?

当元素在使用jQuery时已经消失时,是否有可能获得某种事件通知?即如果有'fadeInEvent',我会尝试类似的东西

$('elements').delegate('selector', 'fadeInEvent', function() {
    alert('someId has faded in');
});
Run Code Online (Sandbox Code Playgroud)

我知道jQuery.fadeIn()有一个回调函数,例如

$('#someId').fadeIn('fast', function() {
    alert('callback when someId has faded in');
});
Run Code Online (Sandbox Code Playgroud)

但如果可能的话,我宁愿使用事件解决方案.我也使用了一些原型:visible,但它true在淡入完成之前返回.

javascript jquery fadein

10
推荐指数
1
解决办法
4637
查看次数

Spring MVC,将@ExceptionHandler迁移到HandlerExceptionResolver以获取RESTful服务

背景

我有一个错误消息类:

@XmlRootElement
public class ErrorMessage {
    private String message;

    public ErrorMessage() {
    }

    public ErrorMessage(String message) {
        this.message = message;
    }

    public String getError() {
        return message;
    }

    public void setError(String message) {
        this.message = message;
    }
}
Run Code Online (Sandbox Code Playgroud)


此类已被指定为Spring MVC REST控制器中@ExceptionHandler的返回值:

@ExceptionHandler
@ResponseStatus(HttpStatus.NOT_FOUND)
@ResponseBody
ErrorMessage handleException(RuntimeException e) {
    return new ErrorMessage("something went wrong");
}
Run Code Online (Sandbox Code Playgroud)

每当客户端触发RuntimeException发出一个请求后application/json,为Accept报头,它接收用正确的状态码和匹配JSON体的响应:

{"error":"something went wrong"}
Run Code Online (Sandbox Code Playgroud)

或者,如果Accept标头是application/xml:则接收XML主体:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<errorMessage><error>something went wrong</error></errorMessage>
Run Code Online (Sandbox Code Playgroud)


问题

现在,我想通过实现一个HandlerExceptionResolver …

java rest spring content-type spring-mvc

9
推荐指数
1
解决办法
8852
查看次数

Jenkinsfile中的动态参数?

如何在一个?中使用Jenkins Dynamic PluginJenkinsfile

我正在寻找的是一个Jenkinsfile片段:

  • 启用Build with ParametersJenkins作业中的选项
  • 选中后,将填充填充可以使用的列表的脚本,Dynamic Choice Parameters并且用户将看到下拉列表.

尝试时:

  1. Pipeline syntax 在詹金斯编辑
  2. 选择properties: Set job propertiesSample step
  3. 选择 This project is parameterized
  4. 运用 Dynamic Choice Parameter
  5. 输入值Name,Choice Script,Remote Script
  6. Generate Pipeline Script

我得到以下模板:

properties([
    parameters([
        <object of type com.seitenbau.jenkins.plugins.dynamicparameter.ChoiceParameterDefinition>
    ]), 
    pipelineTriggers([])
])
Run Code Online (Sandbox Code Playgroud)

即生成的管道脚本不包含我在5.上面步骤中输入的数据.如何修改parameters以便用户可以看到参数名称,选项等?


Jenkins版本:2.19.3动态参数插件版本:0.2.0

jenkins jenkins-pipeline

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