草庐IT

@Transactional注解与try catch

全部标签

java - Spring @Value 注解方法,当属性不可用时使用默认值

情况我正在将.properties文件中的属性注入(inject)到用@Value注释的字段中。但是,此属性提供敏感凭据,因此我将它们从存储库中删除。我仍然希望以防万一有人想运行项目并且没有带有默认值将设置为字段的凭据的.properties文件。问题即使我将默认值设置为字段本身,当.properties文件不存在时我也会遇到异常:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'xxx':Injectionofautowireddependenciesfailed;nes

java - @Transactional (noRollbackFor=RuntimeException.class) 不会阻止在 RuntimeException 上回滚

@Transactional(noRollbackFor=RuntimeException.class)publicvoidmethodA(Entitye){service.methodB(e);}---以下服务方式---@Transactional(propagation=Propagation.REQUIRES_NEW,noRollbackFor=RuntimeException.class)publicvoidmethodB(Entitye){dao.insert(e);}当methodB()中的dao.insert(e)导致主键冲突并抛出ConstraintViolationE

java - 自定义 Spring AOP Around + @Transactional

我实现了自定义Around以匹配自定义注释。我希望自定义在外部@Transactional中执行。不幸的是,这似乎不起作用。(AOP正在运行。我看到显示它的堆栈跟踪)。堆栈跟踪显示我的AOP在(记录器)之前执行,MyBatissession开始一个事务,MyBatis关闭事务,Spring关闭事务然后我的AOP完成。我认为让我的AOP实现Ordered会有所帮助。我将返回的值设置为1。我使用.这没有用。我认为这是因为我误解了Spring的命令方式。AdviceorderingWhathappenswhenmultiplepiecesofadviceallwanttorunatthesa

java - 测试 Spring @MVC 注解

前几天我遇到了一个问题,@Valid注释被意外地从Controller类中删除了。不幸的是,它没有破坏我们的任何测试。我们的单元测试都没有实际使用SpringAnnotationMethodHandlerAdapter路径。我们只是直接测试我们的Controller类。如果我的@MVC注释有误,我该如何编写单元测试或集成测试正确失败?有没有一种方法可以让Spring使用MockHttpServlet或其他东西找到并运行相关的Controller? 最佳答案 我为这种事情写集成测试。假设您有一个带有验证注释的bean:publiccl

java - Spring Data JPA - 在没有@Transactional 的情况下获取延迟加载的集合

我的期望是,当在事务范围内访问集合时,应该获取延迟加载的集合。例如,如果我想获取一个集合,我可以调用foo.getBars.size()。缺少Activity事务将导致异常并显示错误消息,如failedtolazilyinitializeacollectionofbars:....couldnotinitializeproxy-noSession但是,我注意到我最新的应用程序中的行为有所不同。我将SpringBoot1.5.1与“data-jpa”启动器一起使用。我过去使用过SpringBoot,但data-jpastarter对我来说是新的。考虑以下情况。我有一个延迟加载的ManyT

java - 方法注释和注解……各自应该去哪里?

所以,假设我有一个包含如下注释的方法:@Overridepublicvoidbar(Stringx)如果我要向这段代码添加Javadoc注释,哪种方法是首选?任一个:/***@paramxAstringlol*/@Overridepublicvoidbar(Stringx)或者:@Override/***@paramxAstringlol*/publicvoidbar(Stringx) 最佳答案 第一个。注释适用于方法,而不适用于注释。这也是大多数IDE会执行的操作,因此也是最常见的。

java - Spring 注解@Autowired 内部方法

@Autowired可以与构造函数、setter和类变量一起使用。如何在方法或任何其他范围内使用@Autowired注释。?我尝试了以下,但它会产生编译错误。例如publicclasssTestSpring{publicvoidmethod(Stringparam){@AutowiredMyCustomObjctobj;obj.method(param);}}如果这是不可能的,有没有其他方法可以实现?(我使用的是Spring4。) 最佳答案 @Autowired注解本身是用注解的@Target({ElementType.CONSTR

java - Java注解什么时候执行?

我只是想写一些可以在运行时、调用服务方法之前或之后立即执行的注释。我不知道它们是在运行时还是编译时执行。 最佳答案 注解不执行;它们是由各种工具读取的注释或标记。有些由您的编译器读取,例如@Override;其他的嵌入在类文件中,并在运行时由Hibernate等工具读取。但他们自己什么都不做。您可能会想到assertions相反,它可用于验证前后条件。 关于java-Java注解什么时候执行?,我们在StackOverflow上找到一个类似的问题: https

java - JDK 1.6 中的@override 注解

我正在使用JDK1.6。当我实现一个接口(interface)并在实现类中时,如果我在函数名称前给出@override,Eclipse会抛出一个编译错误。即根据Eclipse,下面的代码是错误的。publicclassSomeListenerimplementsServletContextListener{@OverridepublicvoidcontextDestroyed(ServletContextEventarg0){//code}/*otheroverriddenmethodshere*/}如果我删除@Override注释,那么代码可以正常编译。是不是意味着JDK1.6不再要

java - 注解不是继承自接口(interface)方法

我有一个带有注释方法的接口(interface)。注释用@Inherited标记,所以我希望实现者继承它。然而,事实并非如此:代码:importjava.lang.annotation.Inherited;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.reflect.Method;importjava.util.Arrays;publicclassExample{publicstaticvoidmain(String[]args)throws