【发布时间】:2014-05-23 00:37:31
【问题描述】:
这是一个 Spring Hibernate 实现。我已经定义了一个自定义类型定义,我需要在其中传递
我的自定义类型定义类的一个默认值如下。
但是值是 null 请帮我看看我在这里缺少什么?
@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") })
弹簧配置是
<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,但想不通
bean 被注入的方式。
【问题讨论】:
-
你到底想做什么,你需要注入 EncryptString 吗?可能有更好的方法来完成您想做的事情,但是您的示例并不能很好地表达您的意图
-
这只是一个假设的业务场景。请只考虑技术要求。