按照线程名称的指导,我想使用Spring Boot创建一个JAVA库。我发现了这个线程:使用Spring boot创建一个库jar。但是,该线程的目标似乎可以通过将其实现为REST API来解决。
当前,我正在使用SpringBoot开发基于Spring的JAVA库。而且,我尝试将其打包为jar文件,并让另一个JAVA应用程序按照JAVA库的形式使用它。不幸的是,我发现,当调用者应用程序调用添加的库的某些方法时,库 中定义的配置根本不起作用 。它还显示类似“ CommandLineRunner不存在 ” 的错误。
有关更多信息,下面显示pom.xml文件的片段。根据配置,我不包括Web应用程序的依赖项。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>2.3.0</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
如果以正确的方式进行设计,这根本不是问题。但是,具体取决于您使用的功能。由于Spring支持外部库,例如JPA,Websocket等。
开发一个库并在另一个项目中使用它有两个重要的注释。
第一个是,简单@Configuration的是@Import。
@Configuration
@Import
图书馆项目
将一个类放在根包中,看起来像这样。
@Configuration // allows to import this class @ComponentScan // Scan for beans and other configuration classes public class SomeLibrary { // no main needed here }
使用该库的其他项目
通常,将一个类放在项目的根包中。
@SpringBootApplication @Import(SomeLibrary.class) // import the library public class OtherApplication { // just put your standard main in this class }
重要的是要记住,根据您在其他框架上的使用情况,可能还需要执行其他操作。例如,如果您使用 spring-data, 则@EntityScan注释会扩展hibernate扫描。
@EntityScan