May14

【原创】ActiveMQ连接池在Spring配置中的注意事项

Author: leeon  Click: 5986   Comments: 0 Category: java  Tag: spring3,activemq,pool

今天在spring3中集成配置activemq时发现使用PooledConnectionFactory来编写bean怎么都无法启动,提示创建bean失败(org.springframework.beans.factory.BeanCreationExcept)

我所使用的版本是activemq-pool 5.8版,发现老外也有遇到同样的问题,说有可能是common-dbcp引用的版本不对造成的。

http://techempowers.wordpress.com/2013/09/24/activemq-beancreationexception-pooledconnectionfactory-malformedparameterizedtypeexception/

https://issues.apache.org/jira/browse/AMQ-4189

查看我的工程中没有引用到common-dbcp的包,反而common-pool的包有两个,一个1.5.5版本一个1.6版本,于是将1.5.5版本的jar引用在工程中去掉然后再测试发现bean可以创建成功了。跟踪common-pool的依赖关系发现是jedis的jar包关联有用导致不同的api包引用了不同版本的common-pool包所致,然而active-pool的包必须依赖1.6版本的才能启动。


总结: 只要按照规则编写好bean配置,一定要先检查依赖的包是否符合版本要求,同时检查是否有同一个模块包不同版本的引用

May7

【原创】Mybatis插件推荐-mybatipse

Author: leeon  Click: 10770   Comments: 0 Category: java  Tag: mybatipse,eclipse,mybatis

在eclipse下使用mybatis时,编写sql的xml没有智能提示还是一件很麻烦的事情,同时在dao层的方法要去映射到xml中的id名,跳转也是一件操作繁琐的事情,最近在eclipse官网发现了一个比较还用的mybatis插件,可以解决我们在使用mybatis时不方便的问题。

插件地址:http://marketplace.eclipse.org/content/mybatipse

XML Editor Enhancements

Auto-completion

  • Mapper namespace : Calculated from the path.
    autocomplete namespaceautocomplete namespace
  • Java class/Type alias : Propose Java classes and Type Aliases (translucent icons). Camelcase match is supported. [1] [2]
    autocomplete classautocomplete class
  • Java property : Propose properties of the parent java class. Nested properties are supported.
    autocomplete propertyautocomplete property
  • Statement ID : If corresponding mapper interface exists, propose the method name as a statement ID.
    autocomplete statement id
  • Reference to resultMap/select/sql : Propose ID of the referenced resultMap/select/sql. External reference is supported (blue icons).
    autocomplete reference
  • Parameter properties : #{} and ${} in select/insert/udpate/delte statements. Also works in some attributes.
    autocomplete propertiesautocomplete properties 2
  • javaType, jdbcType, typeHandler in #{}
    autocomplete jdbcType
  • Result elements in resultMap/collection/association : Generates elements for the parent java class properties.
    autocomplete results 1autocomplete results 2

  • [1] For better performance, classes in the application libraries (loaded as JARs) are listed only when at least one package segment is specified.

  • [2] There is a limitation for the type alias support. Basically, if type aliases are registered using Java API, they are not automatically detected. As a workaround, you can register type aliases in MyBatipse's preference. See the Configuration section.

Hyperlinks

  • To referenced resultMap/select/sql element. External reference is supported.
  • To mapper interface method.

Validation

  • Missing TypeAlias, Java class/property.
  • Missing resultMap/select/sql ID.
  • etc.
    refid errorproblem view

Java Editor Enhancements

Auto-completion

  • Parameter properties : #{} and ${} in select/insert/udpate/delte annotations. autocomplete properties in java
  • javaType, jdbcType, typeHandler in #{} : See the XML example.
  • Reference to resultMap in @ResultMap
    autocomplete resultmap annotation

Quick Assist

  • Add @Param to method parameters : Put the cursor on the method name and press cmd + 1 (or ctrl + 1).
    param-annotation1
    param-annotation2

Configuration

MyBatis Nature

  • By default, each file is validated when it's saved, but you would want to validate the XML mapper when the related Java classes are updated as well. For that purpose, MyBatipse provides a custom nature MyBatis Nature.
    To add the nature, right click the project in the package explorer and choose Configure -> Add MyBatis Nature from the menu.
    nature

Type Alias

  • Type alias are automatically detected if they are registered using XML config file (both mybatis and mybatis-spring config is supported).
    If you register type aliases in Java code, MyBatipse cannot detect them. As a workaround, you can register custom type aliases in the project setting (Open Project -> Properties menu and select MyBatipse from the left column).
    type aliases
    For example, with the above settings:
    • The first entry registers all the classes in com.example.domain package as type aliases.
    • The second entry registers the single class domain.Person.
    • The third entry registers the single class domain.SomeLongNamedBean under the alias SomeBean.
    • Note that, in any case, MyBatipse respects @Alias annotation if it exists.

Tips

  • To move MyBatis proposals to the top of the XML proposal list, quit Eclipse and open the following file in the workspace: .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.ui.prefs Find the line started with xml_content_assist_default_page_sort_order= and insertnet.harawata.mybatis.proposalCategory.xml\u0000 right after the equal sign.
    xml proposal order
Feb16

【原创】Eclipse集成javap查看字节码

Author: leeon  Click: 5699   Comments: 0 Category: java  Tag: javap,eclipse,java,字节码

     分析java语言特性的一个好帮手是使用javap工具查看java编译后的字节码,楼主今天在学习java泛型中的桥方法时遇到一些不解,想到javap这个好工具可以帮助解答一些疑惑,索性就捣鼓如何在eclipse中配置javap工具快速查看java字节码。

    楼主学习的代码工程用的maven结构。默认java编译后的class文件是放在: 工程目录/target/classes 下的,故在配置javap的时候需要配置的变量有所不同,不能直接参考网上的教程方式:

   首先进入run -> External Tool -> External Tools Configurations 然后在Program 节点选定后右键点击“New” 创建一个新的扩展工具配置。

 

然后按照如下图所示配置即可:

 

Location:指定javap的绝对路径。

Working Directory: ${project_loc}变量返回工程所在的绝对路径。

Arguments: 注意这里的参数配置,-classpath 指定的是java代码编译后class文件存放的目录,这里我们配置的是相对于工程根目录而言,class文件的相对目录路径,-c参数后面的值是指定要查看哪个文件的字节码,${java_type_name} 变量返回你选取的类文件名。使用javap工具之前一定得获取class文件,因此先让你的代码能正常run一遍把。

如果你的工程不是maven的目录结构,那么只用按照本文配置修改classpath参数的值指定你的class文件存放的相对路径即可。使用javap工具的时候切记需要激活你当前java的代码编辑窗口才能使用。

Feb9

【学习笔记】Java基本数据类型数组与Object的转换

Author: leeon  Click: 4311   Comments: 0 Category: java  Tag: java,object,array,数组

在阅读java核心技术第一卷时有一个技术细节值得记录一下:

基本数据类型数组和Object类型是可以互相转换的,但是基本数据类型不能和Object[]对象型数组进行转换

简言之: 在java中数组是对象,对象数组和原始数据类型数组在使用方法上几乎是完全一致的,唯一的差别在于对象数组容纳的是引用而原始数据类型数组容纳的是具体的数值

比如如下代码:

[code="java"]

import java.util.Arrays;



public class test {
private static void r(Object o){
System.out.println(Arrays.toString((int[])o));
}
/**
* @param args
*/
public static void main(String[] args) {
int[] a = new int[10];
r(a);


}

}
[/code]

我们可以看到输出结果为:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

但我们不能将静态方法r中的参数类型申明为Object[] ,这样是编译不通过的。

在非基本类型数组与Object之间的转换时我们可以使用Object做为参数类型,也可以使用Object[]做为参数类型,其中的区别可以参考如下代码:

[code="java"]

class Student{
String name="zhang";

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}


public class test {
private static void r1(Object o){
for(Object obj : (Object[])o){
System.out.println(((Student)obj).getName());
}
}

private static void r2(Object[] o){
for(Object obj : o){
System.out.println(((Student)obj).getName());
}
}

public static void main(String[] args) {
Student[] student = {new Student(),new Student()};
r1(student);
r2(student);
}

}
[/code]

输出结果是一样的。

分类

标签

归档

最新评论

shallwe99在10:21:17评论了
【原创】如何在微信小程序开发中正确的使用vant ui组件
默一在09:04:53评论了
Berkeley DB 由浅入深【转自架构师杨建】
Memory在14:09:22评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
leo在17:57:04评论了
shell中使用while循环ssh的注意事项
呵呵哒啦在15:06:33评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)

我看过的书

链接

其他

访问本站种子 本站平均热度:6898 c° 本站链接数:29 个 本站标签数:459 个 本站被评论次数:93 次