小编Sea*_*oyd的帖子

了解Spring事务 - 当事务方法调用另一个事务方法时会发生什么?

只是为了理解Spring事务的工作原理,我想知道在下面的情况下会发生什么,其中一个方法被标记为@Transactional调用另一个标记为的方法@Transactional.

假设配置使用所有默认设置.

@Service("myService")
@Transactional
public MyService{
   public void myServiceMethod(){
      myDAO.getSomeDBObjects();
   }
}

@Repository("myDAO")
@Transactional
public MyDAOWithUsesBeyondMyService{
   public void getSomeDBObjects(){...}
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我要输入MyService.myServiceMethod()它,显然会启动一个交易.然后,钻进myDAO.getSomeDBObjects()会发生什么?交易已经存在的事实会导致没有新的交易产生,或者我在这里创建两个交易?

关于传播的文档(引用如下)似乎涵盖了这一点,但我想验证我的理解,这对于我的处女大脑来说有点多了解一下.

传播:通常,在事务范围内执行的所有代码都将在该事务中运行.但是,您可以选择在事务上下文已存在时执行事务方法时指定行为.例如,代码可以继续在现有事务中运行(常见情况); 或者可以暂停现有交易并创建新交易.Spring提供了EJB CMT中熟悉的所有事务传播选项.要了解Spring中事务传播的语义,请参见第10.5.7节"事务传播".

java spring transactions

27
推荐指数
1
解决办法
2万
查看次数

有没有办法告诉surefire跳过某个包中的测试?

像下面这样的东西.

我想要一种方法来跳过我的dao测试.试图避免定义套件的开销.

使用CI,我希望每晚有一个运行所有测试,另一个5分钟的SCM调查仅运行"快速"测试.

mvn -DskipPattern=**.dao.** test
Run Code Online (Sandbox Code Playgroud)

maven-2 surefire

27
推荐指数
3
解决办法
2万
查看次数

如何计算Java中两个gps点之间的距离?

我使用了这段代码,但它不起作用:

需要两个gps坐标之间的距离,如41.1212,11.2323英里(Java)

double d2r = (180 / Math.PI);
double distance = 0;

try{
    double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
    double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
    double a =
        Math.pow(Math.sin(dlat / 2.0), 2)
            + Math.cos(startpoint.getLat() * d2r)
            * Math.cos(endpoint.getLat() * d2r)
            * Math.pow(Math.sin(dlong / 2.0), 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double d = 6367 * c;

    return d;

} catch(Exception e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java gps distance geo coordinates

23
推荐指数
3
解决办法
4万
查看次数

我可以用Guava将文本换行到给定的宽度吗?

我希望能够将长字符串包装到固定长度.在番石榴有没有办法做到这一点?

Apache Commons/Lang拥有WordUtils.wrap(String, length)完全符合我需要的方法.番石榴有没有简单的方法来实现这一目标?

我知道我可以使用硬包装Splitter.fixedLength(int),但我想要一个软包装.


更新:这个问题现在有一个赏金.

显然,这个功能在Guava开箱即用,所以奖金是最简洁(或最完整)和类似番石榴的答案,使用Guava中的内容.除了番石榴之外没有其他库.

java word-wrap guava

23
推荐指数
4
解决办法
2594
查看次数

我如何向Maven索取默认存储库列表?

我可以用什么命令向Maven询问它搜索其依赖项的默认存储库列表?如果不存在这样的命令,我还能在哪里找到这个默认列表?

java build-process maven-2

22
推荐指数
3
解决办法
2万
查看次数

Apache commons文件上传替代品

我想知道Java File Upload API的StackOverflow用户过去使用过什么并建议使用?一个快速的谷歌搜索似乎表明最常用的API是Apache Commons文件上传(目前在1.2.1),但是,我们遇到了一些关于使用这个库的问题,我们无法使用更大的文件解决.

有没有人找到他们推荐的可靠的文件上传库(除了Apache Commons之外)?

编辑:Streaming API 不是一个选项,因为它使用导致我们问题的相同底层类.

编辑2:我们的原始问题似乎是负载平衡的某种问题.我们的克隆实例使用Apache/AJP1.3,实时实例使用Zeus XTM.使用服务器IP而不是主机名绕过负载均衡器似乎会导致问题消失.

编辑3:这结果是客户端防火墙的问题.看来他们是......呃..当他们说明确知道这不是防火墙问题时,并不是完全真实的.

java upload file-upload uploading

21
推荐指数
1
解决办法
3919
查看次数

javax.persistence注释和继承

我有4个持久化类,它们都具有相同的字段(确切地说),它们之间唯一的区别是1)类名,2)表名和3)数据.我知道这对某些人来说可能有点奇怪,但相信我有一个很好的理由我不会进入这里.

现在,我正在使用hibernate注释来配置我的类,它应该像这样工作:

@Entity
@Table(name = "store")
public class Store
{
 @Id
 @Column(name = "unique_id")
 protected String id;
 @Column
 protected String category;
 ...
}
Run Code Online (Sandbox Code Playgroud)

..这确实有效,对于一个单独的类,但是有很多字段要映射,我想在所有四个相似的类中一次性完成所有这些,即:

public class StoreBase
{
 @Id
 @Column(name = "unique_id")
 protected String id;
 @Column
 protected String category;
 ...
}

@Entity
@Table(name = "store1")
public class Store1 extends StoreBase
{}

@Entity
@Table(name = "store2")
public class Store2 extends StoreBase
{}

@Entity
@Table(name = "store3")
public class Store3 extends StoreBase
{}

@Entity
@Table(name = "store4")
public class Store4 extends StoreBase …
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate jpa

21
推荐指数
2
解决办法
6717
查看次数

强迫Maven清洁

我有一个包含2个配置文件的项目,因为UAT和PROD使用相同jar的不同版本.

我注意到,如果我没有明确调用mvn clean ...已部署的EAR将有两个UAT和PROD罐子.

在POM中是否有一种方法可以指定Maven应该在任何建筑物之前始终清洁?

java maven-2 release

21
推荐指数
1
解决办法
1万
查看次数

将Java字符串转换为ascii

我需要将String包含某些特定于某些语言的字母(如HÄSTDJUR - noteÄ)的s 转换为String没有这些特殊字母(在本例中为HASTDJUR)的字母.我怎么能用Java做呢?感谢帮助!


这听起来并不是真的.方案如下 - 您想要使用该应用程序,但没有瑞典语键盘.因此,您不必查看字符映射,而是使用拉丁字母表中的典型字母替换特殊字母.

java ascii

21
推荐指数
1
解决办法
3万
查看次数

Annotation可以实现接口吗?

注释中是否有可能实现接口?就像是:

public @interface NotNull implements LevelInterface  {
    ValidationLevel level();
};
Run Code Online (Sandbox Code Playgroud)

java annotations interface

21
推荐指数
3
解决办法
1万
查看次数