只是为了理解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节"事务传播".
像下面这样的东西.
我想要一种方法来跳过我的dao测试.试图避免定义套件的开销.
使用CI,我希望每晚有一个运行所有测试,另一个5分钟的SCM调查仅运行"快速"测试.
mvn -DskipPattern=**.dao.** test
Run Code Online (Sandbox Code Playgroud) 我使用了这段代码,但它不起作用:
需要两个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) 我希望能够将长字符串包装到固定长度.在番石榴有没有办法做到这一点?
Apache Commons/Lang拥有WordUtils.wrap(String, length)完全符合我需要的方法.番石榴有没有简单的方法来实现这一目标?
我知道我可以使用硬包装Splitter.fixedLength(int),但我想要一个软包装.
更新:这个问题现在有一个赏金.
显然,这个功能在Guava开箱即用,所以奖金是最简洁(或最完整)和类似番石榴的答案,使用Guava中的内容.除了番石榴之外没有其他库.
我可以用什么命令向Maven询问它搜索其依赖项的默认存储库列表?如果不存在这样的命令,我还能在哪里找到这个默认列表?
我想知道Java File Upload API的StackOverflow用户过去使用过什么并建议使用?一个快速的谷歌搜索似乎表明最常用的API是Apache Commons文件上传(目前在1.2.1),但是,我们遇到了一些关于使用这个库的问题,我们无法使用更大的文件解决.
有没有人找到他们推荐的可靠的文件上传库(除了Apache Commons之外)?
编辑:Streaming API 不是一个选项,因为它使用导致我们问题的相同底层类.
编辑2:我们的原始问题似乎是负载平衡的某种问题.我们的克隆实例使用Apache/AJP1.3,实时实例使用Zeus XTM.使用服务器IP而不是主机名绕过负载均衡器似乎会导致问题消失.
编辑3:这结果是客户端防火墙的问题.看来他们是......呃..当他们说明确知道这不是防火墙问题时,并不是完全真实的.
我有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) 我有一个包含2个配置文件的项目,因为UAT和PROD使用相同jar的不同版本.
我注意到,如果我没有明确调用mvn clean ...已部署的EAR将有两个UAT和PROD罐子.
在POM中是否有一种方法可以指定Maven应该在任何建筑物之前始终清洁?
我需要将String包含某些特定于某些语言的字母(如HÄSTDJUR - noteÄ)的s 转换为String没有这些特殊字母(在本例中为HASTDJUR)的字母.我怎么能用Java做呢?感谢帮助!
这听起来并不是真的.方案如下 - 您想要使用该应用程序,但没有瑞典语键盘.因此,您不必查看字符映射,而是使用拉丁字母表中的典型字母替换特殊字母.
注释中是否有可能实现接口?就像是:
public @interface NotNull implements LevelInterface {
ValidationLevel level();
};
Run Code Online (Sandbox Code Playgroud) java ×9
maven-2 ×3
annotations ×2
ascii ×1
coordinates ×1
distance ×1
file-upload ×1
geo ×1
gps ×1
guava ×1
hibernate ×1
interface ×1
jpa ×1
release ×1
spring ×1
surefire ×1
transactions ×1
upload ×1
uploading ×1
word-wrap ×1