Jaxb:将参数传递给@XmlJavaTypeAdapter

时间:2015-12-11 21:35:09

标签: java spring web-services jaxb jax-ws

我使用以下方法创建soap webservice:Spring Boot / JAX-WS(CXF) 我想加密一个字段。我正在使用XmlJavaTypeAdapter。 例如:

   @XmlJavaTypeAdapter(CypherStringAdapter.class)
   private String cryptedField;

CypherStringAdapter类:

package fr.hop.meta4;

import java.io.UnsupportedEncodingException;    
import javax.xml.bind.annotation.adapters.XmlAdapter;    
import org.springframework.beans.factory.annotation.Value;    
import fr.hop.aes.AESEncryptor;

public class CypherStringAdapter extends XmlAdapter<String, String> {

    @Value("${cypher.key}") 
    private String key;

    private AESEncryptor cypher;

    public CypherStringAdapter() throws UnsupportedEncodingException {    
        cypher = new AESEncryptor(key);        
    }

    @Override
    public String marshal(String v) throws Exception {

        if (v != null)
            return cypher.encrypt(v);

        return null; 
    }

    @Override
    public String unmarshal(String v) throws Exception {
        if (v != null)
              return cypher.decrypt(v);

        return null;        
    }
}

我想要将键值外部化。我尝试使用@value注释,但它没有工作(总是空值)。我如何实现将密钥发送到XmlJavaTypeAdapter?

此致

1 个答案:

答案 0 :(得分:0)

我认为XmlJavaTypeAdapter不是加密的好地方。我改变了我的代码,在我的对象创建中加密,它更有意义,更容易实现,并且有效。

此致