由于最近的Oracle Java SE支持路线图政策更新(特别是在2019年3月之后Oracle的免费发布更新结束),我一直在寻找Oracle Java的替代方案.我发现OpenJDK是一个开源替代品.我找到了AdoptOpenJDK,这是一个预建的二进制文件.它很困惑.
OpenJDK和AdoptOpenJDK有什么区别?
我正在使用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"的值?有没有办法做到这一点?
谢谢,
埃里克
可以使用修改git提交消息IntelliJ
,还是应该使用命令行?
怎么可以这样做呢?
在其他更改中,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?
我在Service类中看到了一个被标记为的方法@Transactional
,但它也在同一个类中调用了一些未标记为的其他方法@Transactional
.
这是否意味着对单独方法的调用导致应用程序打开与DB的单独连接或挂起父事务等?
没有任何注释的方法的默认行为是什么,由另一个带@Transactional
注释的方法调用?
我正在为一个包含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 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) 我HttpServletRequest
在Spring Servlet中收到了一个请求,我希望将AS-IS(即GET或POST内容)转发到另一台服务器.
使用Spring Framework最好的方法是什么?
我是否需要获取所有信息并构建新信息HTTPUrlConnection
?还是有一种更简单的方法?
回调端点托管在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频道不可用
错误的意思?
编辑:与顶级域名相同的结果,证书的主题与域名完全匹配.
我创建了一个"生成器"接口(用于方法引用,分别用于单元测试的模拟):
@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 ×7
spring ×3
autowired ×1
classloader ×1
constructor ×1
exception ×1
generics ×1
git ×1
git-commit ×1
google-api ×1
heroku ×1
http ×1
java-11 ×1
java-9 ×1
javadoc ×1
sdk ×1
servlets ×1
spring-bean ×1
spring-mvc ×1
string ×1
strip ×1
throwable ×1
trim ×1