小编ras*_*orp的帖子

如何在不使用类加载器的情况下动态加载Java类?

我最近看到了JRebel的在线演示,其中他们解释了他们的产品做了什么,在其中一张幻灯片中他们提到他们没有使用类加载器(见下面的截图).

我有一些项目,我使用类加载器在运行时动态加载类,例如依赖注入(如我开发的Maker Factory框架).我认为在Java中加载类的唯一方法是使用类加载器.

在此输入图像描述

java classloader jrebel

5
推荐指数
2
解决办法
1275
查看次数

Swagger UI导致​​产生除JSON以外的内容类型的操作的HTTP 406不可接受的响应

我有一个发布于Jersey并由Swagger记录的REST API,也有一个使用该API的Swagger UI安装。

我几乎所有的操作都会产生application / json并按预期工作,除了一个GET操作会产生:'text / plain; charset = utf-8'

当我尝试从Swagger UI调用服务时,服务器会记录一个javax.ws.rs.NotAcceptableException并返回406响应。如果我从REST客户端调用相同的服务,则它将按预期工作。

@GET
@Path("/text")
@Produces(MediaType.TEXT_PLAIN + ";charset=utf-8")
@ApiOperation(value= "Return text")
public Response getText(@QueryParam("user") String user) {
    return Response.ok(textService.getTextForUser(user)).build();
}
Run Code Online (Sandbox Code Playgroud)

如果我更改为@Produces(MediaType.APPLICATION_JSON +“; charset = utf-8”),则可以正常使用,但我不想设置错误的内容类型。

问题似乎是Swagger UI错误地将Accept标头设置为application / json,这可以通过观察请求来看出:

GET /supertext/text?user=1
...
Accept: application/json
Run Code Online (Sandbox Code Playgroud)

使用其余客户端时,Accept标头为:

GET /supertext/text?user=1
...
Accept: */*
Run Code Online (Sandbox Code Playgroud)

为什么Swagger UI无法正确设置Accept标头?

可以配置吗?

java rest jersey swagger swagger-ui

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

Spring Boot 自定义 ErrorAttributes http 状态未设置为响应

根据 Spring Boot文档,我定义了自己的 ErrorAttributes bean(见下文),我能够使 json 响应显示我想要的信息,包括我自己的错误代码和消息,方法是使用自定义异常来包装该信息并生成错误来自它的回应。唯一的问题是响应的 http 状态与我在 status 属性中定义的状态不匹配,它没有被覆盖。

@Bean
public ErrorAttributes errorAttributes() {
    return new DefaultErrorAttributes() {
        @Override
        public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) {

            Map<String, Object> errorAttributes = super.getErrorAttributes(requestAttributes, includeStackTrace);

            Throwable error = getError(requestAttributes);

            if (error instanceof MyException) {
                MyException myException = (MyException) error;

                errorAttributes.put("errorCode", myException.getErrorCode());
                errorAttributes.put("message", myException.getMessage());
                errorAttributes.put("status", myException.getStatus());

                HttpStatus correspondentStatus = HttpStatus.valueOf(myException.getStatus());
                errorAttributes.put("error", correspondentStatus.getReasonPhrase());
            }

            return errorAttributes;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

响应的 http 状态与 json 中的状态不匹配,例如:

HTTP/1.1 500 
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked …
Run Code Online (Sandbox Code Playgroud)

java rest spring spring-mvc spring-boot

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

在方法级别隔离单元测试和存根内部方法调用是否正确?

我总是怀疑单元测试隔离是否应该以非常精细的方式完成,例如对内部方法调用进行存根,请查看以下Java,JUnit和Mockito示例.

package com.company.domain;

public class Foo {
    private FooHelper helper; 

    public setHelper(FooHelper helper) {
        this.helper = helper;
    }

    public Double method1(Integer a, Integer b) {
        ... // logic here
        Integer var = method2(a);  // internal call to method2
        ... // more logic here
    }

    protected Integer method2(Integer c) {
        ... // logic here and return an Integer
    }
}
Run Code Online (Sandbox Code Playgroud)

这是测试类:

package com.company.domain;

@RunWith(MockitoJUnitRunner.class)    
public class FooTest {
    @Mock private FooHelper fooHelperMock; // mocking dependencies as usual
    @InjectMocks @Spy Foo foo; …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing mockito

2
推荐指数
2
解决办法
1583
查看次数

使用Groovy和Spring有性能下降吗?

Spring框架支持使用Groovy等动态语言.

由于Groovy现在可以进行静态编译,因此据我所知,groovy类与Java类相比应该具有相似的性能.

因此,例如,如果我通过导入类文件或使用lang:groovy元素在Groovy中编写我的spring bean,例如:

<lang:groovy id="myBean" script-source="classpath:mypackage/MyClass.groovy" />
Run Code Online (Sandbox Code Playgroud)

或内联定义如:

<lang:groovy id="myBean">
    <lang:inline-script>
        package mypackage

        class MyClass {
            String helloWorld() { "Hello World" }
        }
    </lang:inline-script>
</lang:groovy>
Run Code Online (Sandbox Code Playgroud)

我的问题是,与仅使用java类相比,如果这会影响应用程序的性能,我也想知道使用不同于原型,会话,请求等单例的bean时会出现问题.

有没有人用这种方法开发Spring应用程序?我指的是现实世界的专业项目.

java groovy spring

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