我有一个代码片段,看起来像这样
public class XService {
private Repo1 repo1;
private Repo2 repo2;
private Repo3 repo3;
XService(Repo1 repo1, Repo2 repo2, Repo3 repo3) {
this.repo1 = repo1;
this.repo2 = repo2;
this.repo3 = repo3;
}
@Transactional(rollbackFor = Exception.class)
public SomeObject method(Arg1 arg1, Arg2 arg2) {
repo1.method1();
repo2.method2();
repo3.method3(); // probability of exception here, in which case rollback is needed
}
}
public class YService {
private XService xService;
public YService(XService xService) {
this.xService = xService;
}
public SomeObject method(Arg1 arg1, Arg2 arg2) {
xService.method(arg1, arg2);
}
}
配置类
@Configuration
public class ConfigurationClass {
@Bean
@Inject
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
@Inject
public DataSource dataSource() {
// setting config properties here
return new HikariDataSource(config);
}
@Bean
@Inject
public Repo1 repo1(JDBCTemplate template) {
return new Repo1(template);
}
@Bean
@Inject
public Repo2 repo2(JDBCTemplate template) {
return new Repo2(template);
}
@Bean
@Inject
public Repo3 repo3(JDBCTemplate template) {
return new Repo3(template);
}
@Bean
@Inject
public XService XService(Repo1 repo1, Repo2 repo2, Repo3 repo3) {
return new XService(repo1, repo2, repo3);
}
@Bean
@Inject
public YService YService(XService xService) {
return new YService(xService);
}
}
使用TransactionTemplate并将我的repo调用包含在模板中是有效的。
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) throws TransactionException {
repo1.method1();
repo2.method2();
repo3.method3();
}
});
我不知道这个起作用的原因。如果有人能帮助理解这背后的原因,那就太好了。
问题内容: 我有2个Mongodb数据库通过2个MongoTemplate-s连接到Spring Boot应用程序: mongoTemplate (默认的bean名称,连接到默认的db) mongoAppTemplate (在运行时连接到另一个数据库) 我有很多使用mongoTemplate的MongoRepository-,但我也想创建一些使用mongoAppTemplate的东西。 如何配置2
我有两个Mongodb数据库连接到一个Spring Boot应用程序,其中有两个MongoTemplate-s: mongoTemplate(默认的bean名称,连接到默认的db) mongoAppTemplate(在运行时连接到另一个数据库) 我有很多使用mongoTemplate的MongoRepository,但我也想创建一些使用mongoAppTemplate的。 如何配置2 MongoR
我正在尝试实现一个简单的REST服务,该服务基于具有Spring启动和Spring数据Rest的JPA存储库。(请参阅此教程)如果将以下代码与 gradle 一起使用,则运行良好: 为了让事情变得更简单,我使用Spring boot CLI(“Spring run”命令)尝试了相同的代码。 不幸的是,这似乎不起作用@RepositoryRestResource似乎无法像@RestControlle
我试图执行带有子网的select语句,在存储库中使用带有'native query=true'的@query注释。但它给了我以下错误: psqlexception:error:“select”或“select”附近的语法错误 sub SELECT查询单独给出如下所示执行时的预期结果 上述查询的结果集是;RatingsAndReviews对象数组 所以我想要得到的是客户对特定“否”的评分。星星的。比
我想使用Spring LDAP 设置多个 LDAP 存储库。我的目标是同时在所有存储库中创建或更新对象。 我使用LdapRepository Spring接口,我认为目前这是不可能的。 我想知道我是否可以创建自己的LdapRepository来扩展Spring,但是我不知道如何开始。 这是我的配置: 完整地说,一个存储库: 知道怎么做吗? 提前感谢任何帮助。
问题内容: 我的Maven配置有一个小问题。此处的所有其他问题和答案都不能解决我的问题,因此,我开始了一个新问题。 我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。 当下载工件或构建项目时,它将安装在本地存储库中,因此路径正确。 问题是:当我构建一个SNAPSHOT项目时,它仅安装在本地存储库中(应该是这样,不想每次都将其发布在我的关系上)。当我在pom.xml中构建另