gpt4 book ai didi

spring - 如何在 Hibernate UserType 对象中注入(inject)一个 bean?

转载 作者:行者123 更新时间:2023-12-04 19:53:38 27 4
gpt4 key购买 nike

我需要将数据库中的一些实体字段保存为 JSON。最喜欢的解决方案是定义自定义 hibernate UserType。

JSON 转换器 (Jackson) 文档建议将其用作单例,但 hibernate 本身会创建自定义 UserType 对象。如何在我的自定义 Hibernate UserType 对象中注入(inject) spring 定义的 JSON 转换器 bean?

最佳答案

解决方案可能是使用@Configurable,因此您将能够 Autowiring 属性对象,即使那不是激发它们的 spring 容器。

请参阅 spring 文档:http://static.springsource.org/spring/docs/3.2.3.RELEASE/spring-framework-reference/html/aop.html#aop-atconfigurable

代码示例:

@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 开发工具”

关于spring - 如何在 Hibernate UserType 对象中注入(inject)一个 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297030/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com