3

我需要将数据库中的一些实体字段保存为 JSON。最喜欢的解决方案是定义一个自定义休眠用户类型。

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

4

1 回答 1

0

解决方案可能是使用@Configurable,这样您就可以自动装配属性对象,即使那不是强化它们的弹簧容器。

请参阅弹簧文档: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 开发工具”

于 2013-07-23T23:15:03.767 回答