javaparserfacade,Duplicate spring bean id 问题调查

javaparserfacade目录

你常用的Java工具库都有哪些

Duplicate spring bean id 问题调查

你常用的Java工具库都有哪些

Java SDK 肯定是使用最广的库,所以本文的名单焦点是流行的第三方库。

该列表可能并不完善,所以如果你觉得有什么应该出现在列表中的,请留下您的评论。

非常感谢!

1、核心库

Apache Commons Lang:来自Apache的核心库,为java.lang API补充了许多常用的工具类,如字符串操作、对象的创建等。

Google Guava:来自谷歌的核心库,包括集合(Collection)、缓存(Caching)、支持原语(Primitives)等。

(示例)

2、HTML、XML Parser

Jsoup:一个简化了的 HTML操作的库。

(示例)

STaX:一组可以高效处理 XML的API。

(示例)

3、Web框架

Spring:Java平台上众所周知的开源框架和依赖注入容器。

(示例)

Struts2:来自Apache的流行Web框架。

(示例)

Google Web Toolkit:Google提供的开发工具库,主要用于构建和优化复杂的Web程序用。

(示例)

Strips:使用最新Java技术构建的Web程序框架,推荐使用。

Tapestry:面向组件的框架,用于使用Java创建动态、健壮、扩展性高的Web应用程序。

请猛击这里 查看以上面框架之间的比较。

4、图表、报表、图像

JFreeChart:用于创建如条形图、折线图、饼图等图表。

JFreeReport:创建于输出PDF格式的报表。

JGraphT:创建图像,其中只包含由线段连接的点集。

5、窗口

Swing:SDK提供的GUI库。

(示例)

SWT:eclipse提供的GUI库。

SWT与Swing的比较。

6.、GUI框架

Eclipse RCP。

(示例)

7、自然语言处理

OpenNLP:来自Apache的自然语言处理库。

(示例)

Stanford Parser:斯坦福大学提供的自然语言处理库。

(示例)

如果你是一名NLP专家,请猛击这里 查看更多工具库介绍。

8、静态分析

Eclipse JDT:由IBM提供的静态分析库,可以操作Java源代码。

(示例)

WALA:可以处理jar包文件(即字节码)的工具库。

(示例)

9、JSON

Jackson: 用于处理JSON数据格式的多用途的Java库。

Jackson 旨在快速、准确、轻量、对开人员友好之间找到最好的平衡点。

XStream:一个简单用于对象和XML互相转换的库。

Google Gson:一个专门用于Java对象和Json对象相互转换的工具库。

(示例)

JSON-lib:用于 beans、maps、collections、java arrays、XML 和 JSON 之间相互转换操作的工具库。

10、数学

Apache Commons Math:提供数学计算和数值统计需函数的工具库。

11、日志

Apache Log4j:风行一时的日志记录操作库。

 (示例)

Logback:当前流行的log4j项目的继任者。

SLF4J(The Simple Logging Facade for Java): 各种日志框架的一个简单的外观或抽象(如java.util.logging 、logback、log4j等),允许用户在部署时加入需要的日志框架。

12、Office

Apache POI:利用其提供的APIs,可以使用纯Java代码操作各种基于微软OLE2合成文档格式的文档。

Docx4j:一个用于创建、操作微软公开的XML文件的库(支持Word docx、 Powerpoint pptx和Excel xlsx)。

13、日期和时间

Joda-Time:如有质量问题包退包换的Java日期和时间类。

14、数据库

Hibernate、EclipseLink、JPA

JDO

jOOQ

SpringJDBC、Spring Data

Apache DbUtils

15、开发工具

Lambok: 旨在减少代码编写的Java开发库。

Duplicate spring bean id 问题调查

问题背景 :从本地调用服务器的dubbo接口进行测试

实现思路 :基于IDEA+Spring+maven+Dubbo搭建测试项目,从本地直接调用

具体实现思路可参考博客:

碰到问题 :引入测试目标jar后,调用其接口运行测试类时,报错如下

Caused by: java.lang.IllegalStateException: Duplicate spring bean id cfgDistributorServiceImpl

at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:106)

at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:77)

at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:168)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:138)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)

调查思路 :

    1.检查项目中spring是否加载了两个一样的配置文件

     spring对于id的重复,默认的处理策略是覆盖

     但是dubbo的新版本对重复的id做了特殊处理,如果有重复直接抛异常,就会出现上述问题

     检查结果:自己的项目中并没有重复加载配置文件

    

   2.spring扫描项目时,不仅会扫描当前项目中dubbo消费者,新建的类等需要注册的bean

     还会扫描pom.xml中引入的jar包中的带有以下注解的类:@Component,@Repository,@Service,@Controller,@RestController,@ControllerAdvice, @Configuration

     所以在引入包的时候,不能引入service包,因为service层的类多包含有注解@service,需要引入的是facade接口层的jar包

     检查了一下,自己引入的就是service层的jar包,至此问题找到了

    

com.msa.base

base-service

1.0-SNAPSHOT

修改成facade层的引入

    

com.msa.base

base-service-facade

1.0-SNAPSHOT

      重跑测试类:调用成功

(随机推荐阅读本站500篇优秀文章点击前往:500篇优秀随机文章)
来源:本文由易搜IT培训资讯原创撰写,欢迎分享本文,转载请保留出处和链接!