Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在服务器启动时配置Springbean回调?_Spring_Hibernate - Fatal编程技术网

在服务器启动时配置Springbean回调?

在服务器启动时配置Springbean回调?,spring,hibernate,Spring,Hibernate,我希望我的服务器在启动时进行一些数据库清理。我尝试向服务添加@PostConstruct方法来实现这一点,但是@Transactional在那里不起作用。我所做的任何更改都不会持久化。我怎样才能做到这一点?我可以创建一个具有特定回调的新bean吗 您可以在@PostConstruct中调用另一个事务性资源来完成这项工作,因为注入随后完成。因此,DbPopulator可以使用UserService以及其@PostConstruct中的任何内容,并且所有内容都是事务性的,并且再次很好地分离。Sing

我希望我的服务器在启动时进行一些数据库清理。我尝试向服务添加@PostConstruct方法来实现这一点,但是@Transactional在那里不起作用。我所做的任何更改都不会持久化。我怎样才能做到这一点?我可以创建一个具有特定回调的新bean吗

您可以在@PostConstruct中调用另一个事务性资源来完成这项工作,因为注入随后完成。因此,
DbPopulator
可以使用
UserService
以及其
@PostConstruct
中的任何内容,并且所有内容都是事务性的,并且再次很好地分离。Singleton Bean是在启动afaik时构建的,因此不需要额外的设置。

true这似乎只是一个代理问题。如果我在同一个服务中创建了另一个@Transactional函数并调用该函数,则该函数不起作用。你是说我需要调用另一个服务来完成事务部分吗?是的,这是真的。通过此调用同一服务上的另一个方法会绕过代理。你需要呼叫另一个服务。也许将FooService注入FooService在这方面有所帮助(在JavaEE中是这样,我不知道它是否与Spring一起工作)。谢谢,我创建了另一个包含@PostConstruct的组件,该组件调用了我的服务。似乎有效。