我有一个使用spring(4.2.x)工件的web应用程序spring-webmvc,spring-messaging,spring-websocket
我在spring config java类中使用了以下@ Enable*annotations
@EnableWebMvc
@EnableWebSocketMessageBroker
@EnableAsync
@EnableMBeanExport
Run Code Online (Sandbox Code Playgroud)
WebSocket用于向浏览器客户端广播消息.并且很少有使用@Async注释的异步方法
春季版本4.2.0.RC3的应用程序运行良好.但当我将其更改为GA版本4.2.0.RELEASE时,我在启动时得到以下异常.如果我删除@EnableAsync它工作正常,但我需要异步功能.
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.core.task.TaskExecutor] is defined: expected single matching bean but found 4: clientOutboundChannelExecutor,messageBrokerTaskScheduler,clientInboundChannelExecutor,brokerChannelExecutor
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:366)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332)
org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor.setBeanFactory(AsyncAnnotationBeanPostProcessor.java:128)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1597)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1565)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:228)
org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:682)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:667)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:539)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:493)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
Run Code Online (Sandbox Code Playgroud) 我有一个List的List<String>的这是我从一个外部API方法调用得到:
List<List<String>> outerList
Run Code Online (Sandbox Code Playgroud)
我必须通过按照它们在外部列表中的相同顺序连接每个列表中的字符串来创建唯一的键组合.
示例:如果外部列表有2个内部列表,例如list1:{"A","B"}和list2:{"C","D"}.然后可能的唯一组合将是AC,AD,BC和BD.
但问题是outerList大小是动态的,它可以包含任意数量的内部列表.如果内部列表编号是固定的,那么我可以编写循环并创建组合.
我正在考虑使用反射,递归等方向,但到目前为止还没有能够解决它.
public static void main(String[] args) {
List<List<String>> outerList = new ArrayList<List<String>>();
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
List<String> list2 = new ArrayList<String>();
list2.add("C");
list2.add("D");
outerList.add(list1);
outerList.add(list2);
for(String s1: list1) {
for(String s2: list2) {
System.out.println(s1+s2);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里outerList有2个内部列表,所以我创建了2个for循环显式迭代和连接.但实时outerList可以有任意数量的内部列表,如何循环遍历所有内部循环并连接?