Spring 如何在Hibernate用户类型对象中注入bean?

Spring 如何在Hibernate用户类型对象中注入bean?,spring,hibernate,dependency-injection,singleton,usertype,Spring,Hibernate,Dependency Injection,Singleton,Usertype,我需要将DB中的一些实体字段保存为JSON。 最受欢迎的解决方案是定义自定义hibernate用户类型 JSON converter(Jackson)文档建议将其作为单例使用,但hibernate本身会创建自定义用户类型对象。 如何将spring定义的JSON转换器bean注入到我的自定义Hibernate用户类型对象中?该解决方案可以使用@Configurable,这样您就能够自动连接属性对象,即使该属性对象不是用来关联它们的spring容器 请参阅spring文档: 代码示例: @Confi

我需要将DB中的一些实体字段保存为JSON。 最受欢迎的解决方案是定义自定义hibernate用户类型

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

该解决方案可以使用@Configurable,这样您就能够自动连接属性对象,即使该属性对象不是用来关联它们的spring容器

请参阅spring文档:

代码示例:

@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
@可配置
公共类CSSessionImpl实现CSSessionOperations{
私人旅游者;
@注入
私人办公室;
@注入
私人OTM经理;
@注入私有ScheduledExecutorService executorService;
私人计划未来计划;
@施工后
私有无效重新列报器MiseHorslingne(){
如果(计划!=null){
附表.取消(假);
}
schedule=executorService.schedule(新的可调用的(){
@凌驾
公共无效调用()t
请参阅本示例中的内容,当调用CSessionImpl.时,将连接带有@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>

奥特逻辑
org.codehaus.mojo
aspectj maven插件
1.4
编译
真的
${java版本}
${java版本}
假的
真的
org.springframework
春季方面
编译
测试编译
javax.persistence
持久性api
1
真的
org.aspectj
aspectjweaver
${org.aspectj版本}
org.aspectj
aspectjtools
${org.aspectj版本}
如果您使用的是eclispe,还需要安装“ApectJ开发工具”