随笔,本文记录一下关于jar包的注意事项
在spring中,有很多扫描的注解,这些注解不同于@ComponentScan注解,比方说mybatis的@MapperScan注解和JPA的@EnableJpaRepositories和@EntityScan注解
现在我有一个模块A,如果我使用JPA的话,即使不写JPA相关注解,由于pom文件依赖了jpa,而且我这些dao都在当前程序下,所以一个@ComponentScan注解就能扫描到所有关于jpa的类,但是,如果我把这些jpa的类(dao和entity)都放到一个jar包中,然后模块A引用这个jar包,则无法扫描到这些类,即使我的代码结构如下也不行
模块A启动类的包名叫com.aa
JPA的相关类包名也叫com.aa(但是它们在另外一个jar包)
虽然包名都相同,但是依然无法通过@ComponentScan扫描到,此时必须使用专有注解(本例@MapperScan或者@EnableJpaRepositories或者@EntityScan)才行
同样的,读取jar包中的文件也如此
//这种读取方式会出问题,可能是因为对于java来说,一个jar包是一个整体???
File cfgFile = ResourceUtils.getFile("classpath:test.txt");
//使用流的方式就没有问题
org.springframework.core.io.Resource fileRource = new ClassPathResource("test.txt");
fileRource.getFile();//获取文件
fileRource.getInputStream();//获取文件流