小编Mik*_*kov的帖子

OpenJDK和AdoptOpenJDK之间的区别

由于最近的Oracle Java SE支持路线图政策更新(特别是在2019年3月之后Oracle的免费发布更新结束),我一直在寻找Oracle Java的替代方案.我发现OpenJDK是一个开源替代品.我找到了AdoptOpenJDK,这是一个预建的二进制文件.它很困惑.

OpenJDK和AdoptOpenJDK有什么区别?

java sdk

110
推荐指数
2
解决办法
4万
查看次数

是否有办法@Autowire需要构造函数参数的bean?

我正在使用Spring 3.0.5并尽可能地为我的班级成员使用@Autowire注释.我需要自动装配的bean之一需要其构造函数的参数.我查看了Spring文档,但似乎找不到任何关于如何注释构造函数参数的引用.

在XML中,我可以将其用作bean定义的一部分.@Autowire注释是否有类似的机制?

例如:

@Component
public class MyConstructorClass{

  String var;
  public MyConstructorClass( String constrArg ){
    this.var = var;
  }
...
}


@Service
public class MyBeanService{
  @Autowired
  MyConstructorClass myConstructorClass;

  ....
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,如何使用@Autowire注释在MyBeanService中指定"constrArg"的值?有没有办法做到这一点?

谢谢,

埃里克

spring constructor autowired spring-annotations spring-bean

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

使用IntelliJ修改git commit消息

可以使用修改git提交消息IntelliJ,还是应该使用命令行?

怎么可以这样做呢?

git intellij-idea git-commit

100
推荐指数
5
解决办法
5万
查看次数

Java 11中的String trim()和strip()方法之间的区别

在其他更改中,JDK 11为java.lang.String类引入了6种新方法:

  • repeat(int)- 重复String的次数与int参数提供的次数相同
  • lines() - 使用Spliterator延迟提供源字符串中的行
  • isBlank() - 指示String是否为空或仅包含空格字符
  • stripLeading() - 从头开始​​删除空白区域
  • stripTrailing() - 从末端移除空白区域
  • strip() - 从字符串的开头和结尾删除空白区域

特别是,strip()看起来非常相似trim().根据这篇文章, strip*()方法旨在:

String.strip(),String.stripLeading()和String.stripTrailing()方法修剪目标字符串的正面,背面或正面和背面的空白[由Character.isWhiteSpace()确定].

String.trim() JavaDoc声明:

/**
  * Returns a string whose value is this string, with any leading and trailing
  * whitespace removed.
  * ...
  */
Run Code Online (Sandbox Code Playgroud)

这几乎与上面的引用相同.

究竟之间的差别String.trim(),并String.strip()因为Java的11?

java string trim strip java-11

81
推荐指数
4
解决办法
2万
查看次数

@Transactional方法在没有@Transactional anotation的情况下调用另一个方法?

我在Service类中看到了一个被标记为的方法@Transactional,但它也在同一个类中调用了一些未标记为的其他方法@Transactional.

这是否意味着对单独方法的调用导致应用程序打开与DB的单独连接或挂起父事务等?

没有任何注释的方法的默认行为是什么,由另一个带@Transactional注释的方法调用?

java spring transactional spring-transactions

67
推荐指数
4
解决办法
6万
查看次数

有没有办法加快Javadoc(需要7分钟)

我正在为一个包含2,509个类的模块构建一个Javadoc.这目前每秒需要7分钟或6个文件.

我试过了

mvn -T 1C install
Run Code Online (Sandbox Code Playgroud)

但是javadoc只使用1个CPU.有没有办法使用更多和/或加快?

我正在使用Oracle JDK 8更新112.我的开发机器有16个内核和128 GB内存.

运行飞行记录器我可以看到只有一个线程 main

在此输入图像描述

对于那些感兴趣的人,我使用了以下选项:

<plugin>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <additionalJOptions>
            <additionalJOption>-J-XX:+UnlockCommercialFeatures</additionalJOption>
            <additionalJOption>-J-XX:+FlightRecorder</additionalJOption>
            <additionalJOption>-J-XX:StartFlightRecording=name=test,filename=/tmp/myrecording-50.jfr,dumponexit=true</additionalJOption>
            <additionalJOption>-J-XX:FlightRecorderOptions=loglevel=debug</additionalJOption>
        </additionalJOptions>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

注意:一种解决方法是:

-Dmaven.javadoc.skip=true
Run Code Online (Sandbox Code Playgroud)

java javadoc maven-javadoc-plugin

44
推荐指数
3
解决办法
1331
查看次数

如何在Java 9/10中安全地访问类路径中所有资源文件的URL?

从我们的发行说明了解到的Java 9

应用程序类加载器不再是java.net.URLClassLoader的实例(在以前的版本中从未指定过的实现细节).假定ClassLoader :: getSytemClassLoader返回URLClassLoader对象的代码需要更新.

这会破坏旧代码,它会扫描类路径,如下所示:

Java <= 8

URL[] ressources = ((URLClassLoader) classLoader).getURLs();
Run Code Online (Sandbox Code Playgroud)

哪个遇到了

java.lang.ClassCastException: 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to 
java.base/java.net.URLClassLoader
Run Code Online (Sandbox Code Playgroud)

因此,对于Java 9+,以下解决方法被提议作为Apache Ignite项目PR,它在JVM运行时选项中进行调整时可以正常工作:--add-opens java.base/jdk.internal.loader=ALL-UNNAMED.但是,如下面的评论所述,这个PR从未合并到他们的主分支.

/*
 * Java 9 + Bridge to obtain URLs from classpath...
 */
private static URL[] getURLs(ClassLoader classLoader) {
    URL[] urls = new URL[0];

    try {
        //see https://github.com/apache/ignite/pull/2970
        Class builtinClazzLoader = Class.forName("jdk.internal.loader.BuiltinClassLoader");

        if (builtinClazzLoader != null) {
            Field ucpField = builtinClazzLoader.getDeclaredField("ucp");
            ucpField.setAccessible(true);

            Object ucpObject = …
Run Code Online (Sandbox Code Playgroud)

java classloader java-9

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

将HttpServletRequest转发到其他服务器

HttpServletRequest在Spring Servlet中收到了一个请求,我希望将AS-IS(即GET或POST内容)转发到另一台服务器.

使用Spring Framework最好的方法是什么?

我是否需要获取所有信息并构建新信息HTTPUrlConnection?还是有一种更简单的方法?

java spring servlets http spring-mvc

34
推荐指数
4
解决办法
2万
查看次数

尝试检索Google日历事件时,WEB_HOOK频道不可用

我正在尝试为Google日历使用推送通知

回调端点托管在Heroku上.appname.herokuapp.com已在Search Console中进行验证,并已添加到Google控制台API和服务允许的域列表中.

请求

POST /calendar/v3/calendars/CALENDAR_ID/events/watch HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer TOKEN
Content-Type: application/json
{
    "id":"1",
    "type": "web_hook",
    "address":"https://APPNAME.herokuapp.com/change"
}
Run Code Online (Sandbox Code Playgroud)

响应

400 Bad Request
{
    "error": {
        "errors": [
            {
                "domain": "push",
                "reason": "channelUnknown",
                "message": "WEB_HOOK channel unavailable for: 
{address=https://APPNAME.herokuapp.com/change}"
            }
        ],
        "code": 400,
        "message": "WEB_HOOK channel unavailable for: {address=https://APPNAME.herokuapp.com/change}"
    }
}
Run Code Online (Sandbox Code Playgroud)

什么

WEB_HOOK频道不可用

错误的意思?

编辑:与顶级域名相同的结果,证书的主题与域名完全匹配.

google-calendar-api google-api heroku push-notification

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

如何不抛出一般指定的异常?

我创建了一个"生成器"接口(用于方法引用,分别用于单元测试的模拟):

@FunctionalInterface
public interface Factory<R, T, X extends Throwable> {
    public R newInstanceFor(T t) throws X;
}
Run Code Online (Sandbox Code Playgroud)

我创建的那样,因为我的第一个用例实际上必须抛出一些检查WhateverException.

但是我的第二个用例没有投掷X.

我能想出的让编译器满意的最好方法是:

Factory<SomeResultClass, SomeParameterClass, RuntimeException> factory;
Run Code Online (Sandbox Code Playgroud)

这编译,并做我需要的,但仍然是丑陋的.有没有办法保留单个接口,但在声明特定实例时不提供X?

java generics exception type-conversion throwable

21
推荐指数
3
解决办法
1629
查看次数