我需要将数据库中的一些实体字段保存为 JSON。最喜欢的解决方案是定义一个自定义休眠用户类型。
JSON 转换器 (Jackson) 文档建议将其用作单例,但 hibernate 本身会创建自定义 UserType 对象。如何在我的自定义 Hibernate UserType 对象中注入 spring 定义的 JSON 转换器 bean?
我需要将数据库中的一些实体字段保存为 JSON。最喜欢的解决方案是定义一个自定义休眠用户类型。
JSON 转换器 (Jackson) 文档建议将其用作单例,但 hibernate 本身会创建自定义 UserType 对象。如何在我的自定义 Hibernate UserType 对象中注入 spring 定义的 JSON 转换器 bean?
解决方案可能是使用@Configurable,这样您就可以自动装配属性对象,即使那不是强化它们的弹簧容器。
代码示例:
@Configurable
public class CSessionImpl implements CSessionOperations {
private Touriste touriste;
@Inject
private Office office;
@Inject
private OTmanager manager;
@Inject private ScheduledExecutorService executorService;
private ScheduledFuture<Void> schedule;
@PostConstruct
private void replanifierMiseHorsLigne(){
if(schedule != null){
schedule.cancel(false);
}
schedule = executorService.schedule(new Callable<Void>() {
@Override
public Void call() t
在这个例子中看到当 CSessionImpl.<init> 将被调用时,带有@Inject 的属性将被连接。
您需要添加 beans.xml :
<context:spring-configured/>
您还需要在编译时或运行时执行编织
用于编译时编织的 maven 示例:
<build>
<finalName>OTLogiciel</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>compile</id>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
<source>${java-version}</source>
<target>${java-version}</target>
<verbose>false</verbose>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
</dependencies>
</plugin>
如果您使用的是 eclispe,您还需要安装“ApectJ 开发工具”