小编Xep*_*ris的帖子

Java Maven MOJO - 从项目POM获取信息

我正在研究一个maven插件.我似乎很难搞清楚,从执行MOJO的项目中获取POM信息的好方法是什么?

例如,如果我在另一个maven项目中执行我的mojo,我想获得项目名称或其他一些参数.

还有一件事,在AbstractMojo.java类中有一个上下文MAP有私有Map pluginContext,如果我错了可能会有人纠正我,但这是假设用于在mojos之间传递信息吗?

java mojo pom.xml maven

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

Java - 加载带注释的类

我知道有一套令人难以置信的工具可以在java中加载插件类,但今天我想到了一个想法.

如果我在包"org.home.junk"中有一堆带注释和未注释的类(注释带有注释"@AnnotatedClass"),并且那些类具有带注释"@AnnotatedMethod"的注释方法,该怎么办?

第一个问题:我可以在运行时获取该特定包中所有类的数组/集合,以便我可以检查哪个类被注释并创建它们的实例.(我知道如何检查Some.class是否有本指南的注释:http://isagoksu.com/2009/development/java/creating-custom-annotations-and-making-use-of-them/ )

第二个问题: - 如果我能在第一个问题上做我想做的事 - 那么最政治的方式是什么?

我相信这是可能的,因为我理解JUnit以类似的方式加载测试用例类.

如果这可以用最少的第三方库来完成也是很酷的,再次 - 如果可能的话:)

java annotations classloader

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

带有methodOn的Spring HATEOAS ControllerLinkBuilder

使用带有methodOn功能的ControllerLinkBuilder时,我不明白的一件事是当你的Controller有这样的方法签名时你应该怎么做:

public HttpEntity<ResourceSupport> update(@PathVariable(USER_ID) Long userId, @Valid @RequestBody UserUpdateRequest userUpdateRequest, BindingResult bindingResult)
Run Code Online (Sandbox Code Playgroud)

所以每当我想使用methodOn,我怎样填补像空白UserUpdateRequest参数和BindingResult(我用结合的结果来处理与@ControllerAdvice和JSR 303错误的请求异常,使输出消息人类可读).

当我想利用开箱春天HATEOAS的ControllerLinkBuilder更多的方便与methodOn我写出来这样的事情(介意我,我不知道这是否会事与愿违但代码看起来不舒服):

resource.add(linkTo(methodOn(UserController.class).update(userId, null, null)).withSelfRel());
Run Code Online (Sandbox Code Playgroud)

Ofcourse我可以省略methodOn一部分,只是使用linkTo那么这就需要我玩围绕建设路径.

传递null refs 是否合适?加上使用它是如何方便methodOn:因为如果你决定要删除的发言权BindingResult或添加类似的HttpServletRequest控制器方法签名,这样弹簧可以传递我关于请求的详细信息,如果我想为一些安全原因登录的IP地址.这将要求我使用methodOn更改链接构造部分.

是位难以置信我还有一个问题是说,我通过一个合法的裁判methodOnuserUpdateRequest充满了数据-这是否想与生成的链接去任何地方的数据?我已经看到一些超媒体包含rel和href你传递的内容 - 是否可以使用Spring HATEOAS,这是一个很好的做法,创建链接,准备发布/放置有效负载?

但是,仅使用linkTo方法建立与.slash("...")链接的方法回到ControllerLinkBuilder,是否可能降低维护成本?

在日常实践中你会推荐什么,你对链接构建有什么看法?也许有人可以提供专业的提示/建议.

谢谢,

java spring spring-mvc spring-hateoas

11
推荐指数
1
解决办法
5332
查看次数

react-router 4不会使用查询参数更新url

我使用更高级别的过滤器组件将查询参数添加到URL,以便用户可以与不同类型的过滤器共享链接.

我正在导出组件withRouter(),一切似乎都是合法的 - 我将历史注入到组件道具中.但是,当我调用这段代码时:

this.props.history.push({
        pathname: this.props.history.location.pathname,
        query: { tags: selectedTags }
    });
Run Code Online (Sandbox Code Playgroud)

它确实改变了this.props.history的状态,我可以看到我的查询存在,但浏览器中的URL不会改变.难道我做错了什么?

reactjs react-router-v4

6
推荐指数
1
解决办法
1966
查看次数

嵌入式ruby"erb"标签

我一直在经历Ruby和Ruby on Rails的速成课程,我无法弄清楚:在嵌入式ruby html文件中,有几个标签.执行<%=%>的输出<%%>,但这些标签的功能是什么:<%= - %>,最后带有" - "符号的是什么?

谢谢.

ruby tags erb

5
推荐指数
1
解决办法
4622
查看次数

使用MockServletContext进行单元测试

我已经使用Gradle 设置了spring boot应用程序.现在我明白@EnableAutoConnfiguration根据类路径中的依赖关系配置应用程序.我很高兴避免所有的管道,但事情开始发生,我希望不会.

这是我的依赖项:

dependencies {
        compile('org.springframework.boot:spring-boot-starter-web:1.2.3.RELEASE')
        compile 'org.springframework.hateoas:spring-hateoas:0.17.0.RELEASE'
        compile 'org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE'
        compile 'org.springframework.boot:spring-boot-starter-data-jpa'

        compile 'com.google.guava:guava:18.0'
        compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
        compile 'commons-beanutils:commons-beanutils:1.9.2'
        runtime 'org.hsqldb:hsqldb:2.3.2'

        testCompile 'org.springframework.boot:spring-boot-starter-test'
        testCompile 'com.jayway.jsonpath:json-path:2.0.0'
    }
Run Code Online (Sandbox Code Playgroud)

我的应用类:

@ComponentScan("org.home.project")
@SpringBootApplication
//@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

UserController的一个片段:

@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public HttpEntity<ResourceSupport> create(@Valid @RequestBody UserCreateRequest ucr, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) throw new InvalidRequestException("Bad Request", bindingResult);

    Long userId = userService.create(ucr);

    ResourceSupport resource = …
Run Code Online (Sandbox Code Playgroud)

java spring spring-hateoas spring-boot

3
推荐指数
1
解决办法
5288
查看次数

REST - PUT(更新)资源状态

我已经考虑了一段时间,但无法将其环绕在我的脑海中。假设我有一个通过 REST 公开的任务系统。任务有自己的生命周期,例如:

CREATED -> ACTIVE   ->  PROCESSING -> CLOSED
   |          |               |
   |          |-->ESCALATED-->|
   |
    --> DISMISSED
Run Code Online (Sandbox Code Playgroud)

现在使用POST我通过提供正文有效负载中的所有信息来创建任务。

但现在我只需要更改任务的状态,也许添加评论。所以从理论上讲,PUT是要走的路——它正在更新资源。但事情是这样的:

PUT: /tasks/{taskId}?action=activate 似乎是合法的 URI,但是该操作已经有一个请求参数,可用于更改资源的状态 - PUT负载怎么样?对于这个端点的用户发送 0 长度消息的请求是否直观?

更新:

也很抱歉我的英语不好。我的意思是 -使用 URI 参数通过PUT请求更改资源状态,而不使用 BODY (Content-Lenght:0) 因此 URI: /tasks/32/ ?action=CLOSED更改“Task " 状态从PROCESSINGCLOSED

如果这是一个不好的做法 - 什么方法被认为是更好的做法?

rest design-patterns jax-rs

0
推荐指数
1
解决办法
1048
查看次数