小编Pun*_*cky的帖子

List <Enum>包含String

我有一个如下所示的枚举列表 -

List<Status> statusList;
Run Code Online (Sandbox Code Playgroud)

状态定义如下

enum Status { YES , NO , MAYBE }
Run Code Online (Sandbox Code Playgroud)

该清单包含

Status stat = Status.YES;
statusList.add(stat);
Run Code Online (Sandbox Code Playgroud)

我有一个变量

Status statusVar = Status.YES;
Run Code Online (Sandbox Code Playgroud)

我正在尝试比较如下,但它不起作用,因为我猜它是比较参考.以下返回false.你能建议一个解决方案吗?

statusList.contains(statusVar)
Run Code Online (Sandbox Code Playgroud)

编辑:下面是无效的代码.状态是字符串而不是枚举

import java.util.ArrayList;
import java.util.List;
public class Test {
    private enum Status {
        YES , NO , MAYBE
    }


    public static void main (String[] args){

        List<Status> statusList = new ArrayList<Status>();
        String status = "YES";
        statusList.add(Status.YES);

        if(statusList.contains(status)){
            System.out.println(" Yes ");
        } else {
            System.out.println(" No ");
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

java

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

杰克逊反序列化抽象类

我正在尝试使用JSON ObjectMapper反序列化对象。尝试反序列化时出现以下错误

com.fasterxml.jackson.databind.JsonMappingException:无法构造com.phoenix.types.OrderItem的实例:抽象类型要么需要映射到具体类型,要么具有自定义反序列化器,或者包含其他类型信息,请参见[来源:java.io .StringReader @ 4bb33f74; 行:112,列:7](通过参考链:com.phoenix.types.GenerateRequest [“ order”]-> com.phoenix.types.Order [“ orderItems”]-> Object [] [0]) .fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:261)位于com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1456)位于com.fasterxml.jackson.databind.DeserializationContext.handle(MissingInstator) .java:1012),请访问com.fasterxml.jackson.databind.deser。

我碰到过该帖子,介绍了多态反序列化。这基本上为解决上面列出的错误提供了解决方案。我用于反序列化的类(在这种情况下为OrderItem等)是jar文件的一部分。但是,在尝试反序列化时,有一种方法可以将JsonDeserialize定义为objectmapper的一部分,而不是将注释添加到类本身,因为我无法访问它。

java spring jackson spring-boot

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

ConditionalOnMissingBean 按名称

我在配置文件中定义了多个数据源 bean。我有 2 个名为 customerDataSource 的 bean。我希望仅在未加载其他 bean 时才实例化其中之一。我尝试使用 @ConditionalOnMissingBean。然而,看起来只有当另一个相同“类型”的 bean 不存在时,这才有效。有没有办法通过使用“名称”来控制它?

java spring spring-boot

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

从 S3 读取 KMS 加密文件

如何使用 boto3 资源从 S3 存储桶读取 KMS 加密文件?

下面是我用来读取非加密文件的片段 -

s3 = boto3.resource('s3')
obj = s3.Object(bucket_name, key)
body = obj.get()['Body'].read()
print(' body = {}'.format(body))
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 amazon-web-services boto3 aws-lambda

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

转换为JSON后保留XMLGregorianCalendar日期格式--Jackson Lib

我有一个对象有2个XMLGregorianCalendar对象 - 一个用于日期,另一个用于时间.我使用Jackson对象映射器以JSON格式转换日期.转换前的日期是2014-02-10,时间是11:15:00.转换为JSON后,它变为{"date":1392008400000,"time":58500000}.在JSON中打印后,如何保留相同的日期和时间格式({"date":2014-02-10,"time":11:15:00})..

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;


public class TestJSON {

    public static void main(String[] args){

        Date dob=null;
        Date time=null;
        DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
        DateFormat df1=new SimpleDateFormat("hh:mm:ss");
        try {
            dob=df.parse("2014-02-10");
            time=df1.parse("11:15:00");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println(" Date = " + dob);
        System.out.println(" Time = " + time);

        GregorianCalendar cal = new …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

JSON Jackson ObjectMapper ReadValue - 转换日期时出错

尝试将 json 字符串转换为对象时,我看到下面列出的错误。我没有 Data 类的源代码,它是 jar 文件的一部分。有没有办法可以使用混合来解决这个问题?

代码

ObjectMapper mapper = new ObjectMapper();
mapper.readValue(request, Data.class);
Run Code Online (Sandbox Code Playgroud)

错误

org.codehaus.jackson.map.JsonMappingException:无法从字符串值“10:00:00”构造 javax.xml.datatype.XMLGregorianCalendar 的实例:不是有效的表示(错误:无法解析日期“10:00:00” ": 不兼容任何标准格式 ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", " EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

JSON 请求

 "timeSlot":{  
       "date":"2015-10-21",
       "endTime":"10:00:00",
       "startTime":"08:00:00",   
 }
Run Code Online (Sandbox Code Playgroud)

编辑

此问题与类似,但是这是在反序列化时发生的。另一个解决方案有助于适当地序列化请求。

我已经粘贴了下面不起作用的示例代码 -

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class TestJSONDeserialize { …
Run Code Online (Sandbox Code Playgroud)

java json jackson spring-boot

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

Spring JMS 模板 - 并发调用

我可以使用 Spring 进行并发调用吗JMSTemplate

我想并行进行 4 个外部服务调用,并正在探索使用 Spring 并行JMSTemplate执行这些调用并等待执行完成。

我正在考虑的另一个选择是使用ExecutorService.

使用其中一种比另一种有什么优势吗?

java spring multithreading jmstemplate

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

mapsqlparametersource 与 java.util.map

我在 spring 文档中读到 MapSqlParameterSource 只是 Map 的包装器。使用MapSqlParameterSource代替Map有什么优点?

public int countOfActorsByFirstName(String firstName) {

    String sql = "select count(*) from T_ACTOR where first_name = :first_name";

    SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);

    return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);
}




public int countOfActorsByFirstName(String firstName) {

    String sql = "select count(*) from T_ACTOR where first_name = :first_name";

    Map<String, String> namedParameters = Collections.singletonMap("first_name", firstName);

    return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters,  Integer.class);
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-jdbc

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

OAuth2RestTemplate - 客户端缓存

我看到下面的 restTemplate 用于获取 OAuth 令牌。我没有看到任何显式调用来缓存我的应用程序中的令牌。但是,我看到此模板返回了相同的令牌值。OAuth2RestTemplate 是否固有地实现了客户端缓存?如果是这样,它会在令牌过期时显式调用 OAuth2 端点吗?

@Qualifier("oauth")
@Bean
public OAuth2RestTemplate restTemplate(@Qualifier("resourceDetails") ClientCredentialsResourceDetails resourceDetails) {
    return new OAuth2RestTemplate(resourceDetails);
}
Run Code Online (Sandbox Code Playgroud)

我在文档中看到了以下内容-

getAccessToken public OAuth2AccessToken getAccessToken() 抛出 UserRedirectRequiredException

如有必要,获取或更新当前上下文的访问令牌。此方法将在执行请求时自动调用(并缓存结果),但也可以作为独立方法调用以预填充令牌。

java spring spring-boot

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

使用聚合函数时,减少雅典娜扫描的数据量

下面的查询扫描100 mb的数据。

select * from table where column1 = 'val' and partition_id = '20190309';
Run Code Online (Sandbox Code Playgroud)

但是,以下查询将扫描15 GB的数据(分区超过90个)

select * from table where column1 = 'val' and partition_id in (select max(partition_id) from table);
Run Code Online (Sandbox Code Playgroud)

如何优化第二个查询以扫描与第一个查询相同的数据量?

sql presto amazon-athena

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