草庐IT

SpringBoot中异步注解@Async介绍

全部标签

java - 获取运行异步方法的用户

我正在尝试从应用程序spring中的spring上下文获取用户,如下所示:Authenticationauth=SecurityContextHolder.getContext().getAuthentication();问题是方法是异步的,注解@Async:@Service@TransactionalpublicclassFooServiceImplimplementsFooService{@Async("asyncExecutor")publicvoidfooMethod(Stringbar){System.out.println("Foo:"+bar);Authenticatio

Java:用于读取和写入行的异步 I/O channel

我有一个应用程序使用BufferedReader和PrintStream同步读取和写入文本行,其中包含InputStream和OutputStreamjava.net.Socket对象的。因此,我可以只使用方法BufferedReader.readLine()和PrintStream.println()并让Java库将输入分成多行并为我格式化输出。现在我想把这个同步IO换成异步IO。所以我一直在研究允许异步读写字节的AsynchronousSocketChannel。现在,我想要包装类,以便我可以使用字符串异步读取/写入行。我在Java库中找不到这样的包装类。在我编写自己的实现之前,我

java - 如何在@Async 中捕获事务异常?

使用@Async编写事务方法时,无法捕获@Transactional异常。像ObjectOptimisticLockingFailureException,因为它们在事务提交期间被抛出到方法本身之外。例子:publicclassUpdateService{@AutowiredprivateCrudRepositorydao;//throwsegObjectOptimisticLockingFailureException.class,cannotbecaught@Async@TransactionalpublicvoidupdateEntity{MyEntityentity=dao.f

java - 如何使用 Apache Camel Netty4 在异步模式下通过已建立的 TCP 连接发回响应?

我在消费者模式下使用Netty4组件(http://camel.apache.org/netty4.html)构建一个具有ApacheCamel路由的微服务。因此,在我的微服务中,我正在构建的这条路由将通过TCP连接接收消息。为此,我这样做了:@Overridepublicvoidconfigure()throwsException{this.from("netty4:tcp://localhost:7000?textline=true&encoding=utf8").process(newProcessor(){@Overridepublicvoidprocess(finalExch

java - transient 变量的注解@Basic

我有一个POJO类,它包括:-持久属性,-transient特性。在编写HQL时,我同时考虑了两者:持久性和transient性。IE。HQL类似selectpersistent_properties,transient_propfromPojo_classname正确吗?我可以给transient变量写@Basic注解吗? 最佳答案 不,这是不正确的。HQL查询转换为SQL。@Transient属性不在数据库中,因此SQL查询将无法查询该属性。@Basic和@Transient是矛盾的。第一个告诉“这个属性是持久的”,第二个告诉“

@EqualsAndHashCode注解详解

首先该注解的作用:1. 此注解会生成equals(Objectother) 和 hashCode()方法。2. 它默认使用非静态,非瞬态的属性3. 通过参数exclude指定排除属性4. 通过参数of指定使用的属性5. @EqualsAndHashCode(callSuper...),callSuper默认为false,即默认不适用父类中属性判断下面上代码说明父类 Animal          子类Cat          分几种情况测试看结果        1.不指定@EqualsAndHashCode属性         默认callSuper=false,结果为true    2.指定

实现自定义SpringBoot的Starter组件

一、前言想要自定义starter组件,首先要了解springboot是如何加载starter的,也就是springboot的自动装配机制原理。1.1、starter加载原理springboot通过一个@SpringBootApplication注解启动项目,springboot在项目启动的时候,会将项目中所有声明为Bean对象(注解、xml)的实例信息全部加载到ioc容器当中。除此之外也会将所有依赖到的starter里的bean信息加载到ioc容器中,从而做到所谓的零配置,开箱即用。1.1.1、加载starter首先通过通过注解@SpringBootApplication找到@EnableAu

java - 动态配置 Message Driven Bean 中的 MappedName 注解

当使用消息驱动的BEans时,接收消息的目的地名称被硬编码在注解中@MessageDriven(mappedName="someDestinationName")有没有办法在运行时添加这些信息?Bellow是一个示例消息驱动Bean类。packagemdb.beans;importjavax.ejb.ActivationConfigProperty;importjavax.ejb.MessageDriven;importjavax.jms.Message;importjavax.jms.MessageListener;@MessageDriven(mappedName="someDes

java - ContextConfiguration RunWith WebAppConfiguration 注解一起

我有注释这些注释的类:@ContextConfiguration(locations={"classpath:pathToXml.xml"})@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration你能解释一下我在类里面添加这些注释后有什么特点吗? 最佳答案 您将获得@WebAppConfiguration配置javadoc中描述的功能。WebApplicationContext主要改变了资源的加载方式,即具有未指定资源前缀的资源将从src/main/webapp或从va

java - Spring @Async 抽象在异常处理方面存在漏洞

当使用Spring的@Async注释时,当涉及到方法的throws子句中的(已检查)异常时,抽象是有漏洞的。编译器会强制调用者处理异常,但实际上调用者永远不会看到@Async方法抛出的异常。相反,根据实现,它将由Spring处理和记录,或提供给用户配置的异常处理程序,或在返回值上调用Future#get()时生成。因此,我形成的观点是,@Async方法通常不应抛出已检查的异常。相反,他们应该将所有已检查的异常包装在RuntimeException类型中,以便不存在throws子句。这是一个准确的评估吗?是否有任何工具或编程方法可以修复泄漏?有没有人碰巧知道Spring开发人员对此有何看