小编Dar*_*hta的帖子

Spring Boot:Spring始终为属性分配默认值,尽管它存在于.properties文件中

我正在使用Spring 1.0.7,它使用Spring 4.0.7.我使用@Value注释在我的类中自动装配属性.如果属性文件中不存在该属性,我想要一个默认值,因此,我使用":"来指定默认值.以下是示例:

@Value("${custom.data.export:false}")
private boolean exportData = true;
Run Code Online (Sandbox Code Playgroud)

如果属性文件中不存在属性,则应该为变量赋值false.但是,如果文件中存在属性,那么它也会分配默认值并忽略属性值.例如,如果我定义了诸如上述应用属性文件中提到的一个属性有这样的事情custom.data.export=true的话,价值exportData仍然是假的,而应该是真正的理想.

谁能指导我在这里做错了什么?

谢谢

java spring spring-annotations spring-boot

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

Spark:仅在路径存在时读取文件

我正在尝试阅读Sequencescala中Paths中的文件.下面是示例(伪)代码:

val paths = Seq[String] //Seq of paths
val dataframe = spark.read.parquet(paths: _*)
Run Code Online (Sandbox Code Playgroud)

现在,在上面的序列中,存在一些路径而一些路径不存在.有没有办法在读取parquet文件时忽略丢失的路径(避免org.apache.spark.sql.AnalysisException: Path does not exist)?

我已经尝试了以下它似乎工作,但是,然后,我最终读取相同的路径两次,这是我想避免做的事情:

val filteredPaths = paths.filter(p => Try(spark.read.parquet(p)).isSuccess)
Run Code Online (Sandbox Code Playgroud)

我检查了options方法,DataFrameReader但似乎没有任何类似的选项ignore_if_missing.

此外,这些路径可以是hdfss3(这Seq是作为一个方法参数传递),并一边读书,我不知道一个路径是s3hdfs因此无法使用s3hdfs特定的API,以检查是否存在.

scala apache-spark parquet

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

Java 11:补丁 sun.misc.BASE64Encoder

这个问题不是java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder的重复。

我正在尝试更新我的应用程序中的 Java 版本(到 11),并且我的应用程序中的一个库使用sun.misc.BASE64Encoder类,所以我不可避免地会遇到此异常:

Caused by: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
Run Code Online (Sandbox Code Playgroud)

现在,解决的方法是使用java.util.Base64apache commons,正如其他答案所建议的那样。然而,问题是,这个库属于第三方,我没有它的源代码。似乎没有一个新版本不使用这些类。因此,为了解决这个问题,我执行了以下操作:

  • 已创建包sun.misc
  • 复制此包中的BASE64Encoder和类CharacterEncoder

但现在,我收到一个编译错误,说The package sun.misc conflicts with a package accessible from another module: jdk.unsupported.

有什么办法可以解决这个错误吗?如果没有,我可以添加一个jar包含这些类的依赖项吗?我只是想确保这些类在运行时可用于第三方库(通过我自己的源代码或通过捆绑这些类的 jar)。

java base64 deprecated java-8 java-11

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

Spring数据通过"_class"值查找

我们使用spring数据mongo存储库来存储/检索文档.以下是我们得到的类的Java结构:抽象类A - >具体类B和C我们使用save()方法编写文档.保存文档时,会保存存储classPath的"_class"变量.现在,当我们尝试查询数据时,我们将获得B和C类的文档.以下是示例:

public List<B> findByName (String name);
Run Code Online (Sandbox Code Playgroud)

当我们调用此方法时,列表(令人惊讶地)也包含C的对象.这可能是因为B和C有一个具有相同名称的属性.我的问题是,如果我们想将结果限制为特定的类,是否可以使用Mongo存储库?我们尝试使用findBy_Class,findByClass,但它抛出一个异常,说它无法在"B"中找到"class"成员.

返回类型(例如List < B >)是否有助于过滤对象?有任何想法吗?

提前致谢.

repository mongodb spring-data spring-data-mongodb

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

带有apache轴的Spring启动应用程序

我正在尝试运行一个具有axis2依赖关系的spring boot jar.我使用spring boot maven插件来构建jar(带有依赖项).当我尝试运行我的jar时,我在控制台中遇到以下异常:

org.apache.axis2.AxisFault: The G:application\myapp\target\myapp.jar!\lib\axis2-1.6.1.jar file cannot be found.
at org.apache.axis2.deployment.repository.util.DeploymentFileData.setClassLoader(DeploymentFileData.java:111)
at org.apache.axis2.deployment.ModuleDeployer.deploy(ModuleDeployer.java:70)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:813)
at org.apache.axis2.deployment.RepositoryListener.loadClassPathModules(RepositoryListener.java:222)
at org.apache.axis2.deployment.RepositoryListener.init2(RepositoryListener.java:71)
at org.apache.axis2.deployment.RepositoryListener.<init>(RepositoryListener.java:64)
at org.apache.axis2.deployment.DeploymentEngine.loadFromClassPath(DeploymentEngine.java:175)
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:135)
at ...
Run Code Online (Sandbox Code Playgroud)

然后我检查了我的罐子的结构.它里面有lib文件夹,里面包含所有的jar(包括上面提到的jar jar).附件是lib文件夹的屏幕截图在此输入图像描述.以下是我尝试的解决方案:

  1. 将轴jar放在与应用程序jar相同的目录中.
  2. 在与应用程序jar相同的目录中创建lib文件夹,并在其中放置轴jar.
  3. 修改后的清单文件包含Class-Path:/ lib /

这些解决方案都没有奏效.但是,当我在eclipse中运行应用程序类时,应用程序启动并完美运行.但是,一旦我创建了jar,似乎没有任何东西可以运行.

有人可以帮忙吗?提前致谢.

spring axis maven spring-boot

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

上传多部分文件时出现FileNotFoundException - Spring启动

我试图通过弹簧启动应用程序的多部分上传来上传文件.在上传文件时,jetty会抛出FileNotFound Exception.

以下是模型结构:

private String identifier;
private MultipartFile file;
Run Code Online (Sandbox Code Playgroud)

以下是配置:

@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setMaxFileSize("500MB");
    factory.setMaxRequestSize("500MB");
    return factory.createMultipartConfig();
}

@Bean
public CommonsMultipartResolver multipartResolver() {
    return new CommonsMultipartResolver();
}
Run Code Online (Sandbox Code Playgroud)

以下调用抛出异常:

model.getFile().getInputStream()
Run Code Online (Sandbox Code Playgroud)

下面是堆栈跟踪:

java.io.FileNotFoundException: /tmp/MultiPart7953817223010764667 (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at org.eclipse.jetty.util.MultiPartInputStream$MultiPart.getInputStream(MultiPartInputStream.java:218)
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile.getInputStream(StandardMultipartHttpServletRequest.java:253)
//user classes
Run Code Online (Sandbox Code Playgroud)

此问题是间歇性的,我无法通过连续尝试重新生成它.第二次成功上传同一文件.

知道我在这里做错了什么吗?

提前致谢

java file-upload multipart spring-boot

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

Spring Boot:请求和响应的不同ObjectMapper实例

我的春季启动应用程序中有以下控制器:

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<ResponseDto<MyClass> process(@RequestBody RequestDto<MyClass> request){
    return null;
}
Run Code Online (Sandbox Code Playgroud)

MyClass有一个字段,让我们说'myField',我想要NamingStrategy对这个字段的请求和响应有不同的配置(这是因为我不想为一个字段创建一个新类).我已经配置ObjectMapper了如下实例:

@Bean
public ObjectMapper objectMapper(){
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setPropertyNamingStrategy(namingStrategy);
    return objectMapper;
}
Run Code Online (Sandbox Code Playgroud)

这将用于请求和响应(即反序列化和序列化),春季启动中是否有任何方法可以指示控制器使用不同的ObjectMapper实例?

java spring jackson spring-boot

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

Java Regex:将整个单词与单词边界匹配

我正在尝试使用Java检查字符串是否包含整个单词.以下是一些例子:

Text : "A quick brown fox"
Words:
"qui" - false
"quick" - true
"quick brown" - true
"ox" - false
"A" - true
Run Code Online (Sandbox Code Playgroud)

以下是我的代码:

String pattern = "\\b(<word>)\\b";
String s = "ox";
String text = "A quick brown fox".toLowerCase();
System.out.println(Pattern.compile(pattern.replaceAll("<word>", s.toLowerCase())).matcher(text).find());
Run Code Online (Sandbox Code Playgroud)

它与我在上面的例子中提到的字符串一样正常工作.但是,如果输入字符串包含类似等字符%,则会得到不正确的结果(,例如:

Text : "c14, 50%; something (in) bracket"
Words:
"c14, 50%;" : false
"(in) bracket" : false
Run Code Online (Sandbox Code Playgroud)

它与我的regex模式有关(或者我正在做错误的整个模式匹配).谁能建议我一个更好的方法.

java regex string

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

匿名内部类排序

我的项目中有一个类似于以下内容的代码片段:

public static void main(final String[] args) {
    System.out.println("Hello world");
    final TypeReference<String> tr1 = new TypeReference<>() {};
    final Runnable r = () -> {
        System.out.println("Running");
        final TypeReference<String> tr = new TypeReference<>() {};
        System.out.println(tr);
    };
    new Thread(r).start();
}
Run Code Online (Sandbox Code Playgroud)

这存在于与 Java 11 一起运行的 eclipse 中。 现在,当 eclipse 编译此类时,它会生成以下文件:

TestAnon.class
TestAnon$2.class
TestAnon$3.class
Run Code Online (Sandbox Code Playgroud)

因为它有两个匿名内部类,所以有两个不同的类文件是有意义的$。但是,后缀是$2and$3而不是$1and $2。按此顺序生成类文件(并跳过$1)的任何具体原因?

PS 当我在命令行上编译类时,它会以正确的顺序生成类文件。

java eclipse javac java-11

6
推荐指数
0
解决办法
205
查看次数

请求不包含多部分/表单数据或多部分/混合流,内容类型标头为application / x-www-form-urlencoded

我正在尝试获取他们上载的用户文件,但是当您选择文件并提交时,该错误就会出现。

错误:

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
        at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:947)
        at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310)
        at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334)
        at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
        at com.example.HttpRequest.doPost(HttpRequest.java:153)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) …
Run Code Online (Sandbox Code Playgroud)

java http apache-commons-fileupload

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