如何将Spring值注入Hibernate Type Definition类

时间:2014-05-23 00:37:32

标签: java spring hibernate

这是一个Spring Hibernate实现。我已经定义了一个自定义类型定义,我需要传递

我的自定义类型定义类的一个默认值,如下所示。

但价值是空的,请帮助我,我在这里缺少什么?

@TypeDef(name = "customString", typeClass = com.mydomain.EncryptString.class)
public class employee{

    private String empId;
    private String empName;
    @Type(type="customString")
    private String passportNumber;

      //setter and getters 
}


public class EncryptString mplements UserType{
    private String password; // inject via spring configurations

    @Override
    public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {

        String encryptedPassport = rs.getString(names[0]);

        System.out.println(names.length);

        System.out.println("##"+password); // This null ????

        return ""
    }

    //password getters and setters methods

}

弹簧配置

<bean id="customString"
    class="com.mydomain.EncryptString">     
    <property name="password" value="password" />
</bean>

密码密码的值在nullSafeGet()方法中打印Null。如何制作

注射?我希望Spring会加载所有给定的默认值并实例化值

当EncryptString类通过Hibernate注释调用时。

使用调查结果更新我的问题

我看到了一个示例,其中TypeDef将spring bean id作为参数传递,如下所示。

   @TypeDef(name = "encryptedString", typeClass =     
   org.jasypt.hibernate.type.EncryptedStringType.class, parameters = { @Parameter(name 
   = "encryptorRegisteredName", value = "hibernateStringEncryptor") })

Spring配置

 <bean id="hibernateStringEncryptor"
    class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
    <property name="registeredName" value="hibernateStringEncryptor" />
    <property name="password" value="password" />

    <property name="saltGenerator">         
        <bean class="org.jasypt.salt.FixedStringSaltGenerator">
            <property name="salt" value="salt"/>
        </bean>         
    </property>

hibernateStringEncryptor配置通过类型def注入,将bean id作为

传递

参数。我浏览了代码http://www.jasypt.org/download.html,但无法想象

取出注入豆子的方式。

1 个答案:

答案 0 :(得分:0)

我认为你需要使用@Configurable注释,因为Spring没有实例化自定义类型,Hibernate确实如此,而Spring并不知道这些实例。这是描述场景的section in the documentation。我自己没有使用过这种方法,但@Configurable将是我尝试的第一件事。

基本上,您需要使用EncryptString@Configurable类添加注释,将spring-aspect.jar添加到项目的类路径中,将<context:spring-configured/>添加到xml配置文件中并启用AspectJ编织。文档提供了相关的一些细节。