每个框架的联动和执行方法会根据环境而有所不同,框架级别的问题需用户自行解决。
使用OS版本: CentOS Linux release 7.7.1908 (Core)
开发Tool: Spring Tool Suite 4
需具备适合spring版本的jdk环境。(需设置$JAVA_HOME环境变量)
测试用户信息
user: spring
user_home: /home/spring/maven
安装maven软件包
$ wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz $ tar -xvf apache-maven-3.6.3-bin.tar.gz $ cd apache-maven-3.6.3 $ pwd /home/spring/package/apache-maven-3.6.3
设置user profile
export M2_HOME=/home/spring/package/apache-maven-3.6.3 export PATH=$PATH:$M2_HOME/bin
查看maven安装
$ mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /home/jinsil/dev/maven/apache-maven-3.6.3 Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_231/jre Default locale: ko_KR, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1062.9.1.el7.x86_64", arch: "amd64", family: "unix"
创建并执行https://start.spring.io/ 提供的示例来测试spring-boot。
进入https://start.spring.io/并选择要使用的Maven Project, java, Spring boot的版本。在Dependencies中选择Spring Web。单击Generate,将弹出zip形式的示例文件。
将下载的示例移至Linux服务器并解压。检查操作后,通过Web浏览器等访问服务器的8080端口。
$ unzip demo.zip Archive: demo.zip creating: demo/ ..... inflating: demo/src/main/resources/application.properties inflating: demo/src/test/java/com/example/demo/DemoApplicationTests.java $ cd demo $ mvn spring-boot:run [INFO] Scanning for projects... [INFO] [INFO] -------------------------< com.example:demo >-------------------------- [INFO] Building demo 0.0.1-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] <<< spring-boot-maven-plugin:2.2.2.RELEASE:run (default-cli) < test-compile @ demo <<< 2019-12-26 10:15:11.339 INFO 21251 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 0.641 seconds (JVM running for 0.795)
如弹出以下界面,则操作成功。
在联动之前,需具备SUNDB7.jar与hibernate-core-5.4.9.Final.jar文件。
SUNDB7.jar文件是在安装服务器软件包或客户端(Windows)时随附的用于SUNDB JDBC的库文件。
服务器软件包: $SUNDB_HOME/lib/SUNDB7.jar
客户端软件包(windows): C:\Program Files(x86)\SUNDB.x.x\SUNDB_home\lib\SUNDB7.jar
$ pwd /home/spring/demo $ mkdir lib $ mv SUNDB7.jar lib $ vi pom.xml
修改pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
SUNDBDialect.java位于以下路径中。
服务器软件包: $SUNDB_HOME/app_dev/Hibernate/sunje/org/hibernate/dialect/SUNDBDialect.java
客户端软件包(windows): C:\ProgramFiles(x86)\SUNDB.x.x\SUNDB_home\app_dev\Hibernate\sunje\org\hibernate\dialect\SUNDBDialect.java-> 编译完该文件后将生成的SUNDBDialect.class与SUNDBDialect$1.class文件添加到hibernate-core-5.4.9.Final.jar的org/hibernate/dialect中。
将以下内容添加到Dependencies。
<dependencies> <dependency> <groupId>SUNDB</groupId> <artifactId>SUNDB_test</artifactId> <version>3.3.0</version> <scope>system</scope> <systemPath>{项目路径}/lib/SUNDB7.jar</systemPath> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <scope>system</scope> <systemPath>{项目路径}/lib/hibernate-core-5.4.9.Final.jar</systemPath> </dependency> </dependencies>
如果在添加后以调试模式运行,可以检查该库是否已加载。
$ mvn spring-boot:run –X Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /home/jinsil/dev/maven/apache-maven-3.6.3 Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_231/jre Default locale: ko_KR, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1062.9.1.el7.x86_64", arch: "amd64", family: "unix" ... [DEBUG] (f) compilePath = [... /home/spring/demo/lib/SUNDB7.jar]
项目的结构如下。
|-- HELP.md |-- lib | `-- SUNDB7.jar | `-- hibernate-core-5.4.9.Final.jar |-- pom.xml |-- src | `-- main | |-- java | | `-- com | | `-- example | | `-- demo | | |-- DemoApplication.java | | |-- TestController.java | | |-- Board.java | | |-- BoardRepository.java | |-- resources | | |-- application.properties | | |-- static | | `-- templates `-- target |-- classes | |-- META-INF | | |-- MANIFEST.MF | | `-- maven | | `-- com.example | | `-- demo | | |-- pom.properties | | `-- pom.xml | |-- application.properties | `-- com | `-- example | `-- demo | |-- DemoApplication.class | |-- TestController.class | |-- Board.class | |-- BoardRepository.class `-- test-classes
DemoApplication.java
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
TestController.java
package com.example.demo; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired private BoardRepository boardRepository; @RequestMapping("/select") public List<Board> getBoardList(){ return boardRepository.findAll(); } }
Board.java
package com.example.demo; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Board { @Id private int bno; private String subject; public Board() { super(); } public Board(int bno, String subject) { super(); this.bno = bno; this.subject = subject; } public int getBno() { return bno; } public void setBno(int bno) { this.bno = bno; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } @Override public String toString() { return "Board [bno=" + bno + ", subject=" + subject + "]"; } }
BoardRepository.java
package com.example.demo; import org.springframework.data.jpa.repository.JpaRepository; public interface BoardRepository extends JpaRepository<Board, Long>{ }
application.properties
spring.datasource.driverClassName=sunje.SUNDB.jdbc.SUNDBDriver spring.datasource.url=jdbc:SUNDB://127.0.0.1:22581/test spring.datasource.username=test spring.datasource.password=test spring.jpa.database-platform=org.hibernate.dialect.SUNDBDialect spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true
方法1. 在Eclipse中运行:右击项目-> Run As-> 运行Spring Boot App
方法2. 通过指令执行: 在该项目执行mvn spring-boot:run
$ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 错误!超链接引用无效。 ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.2.2.RELEASE) 2020-01-03 17:40:03.664 INFO 24814 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication on localhost.localdomain with PID 24814 (/home/jinsil/study/SpringProject/startboot03/demo/target/classes started by jinsil in /home/jinsil/study/SpringProject/startboot03/demo) 2020-01-03 17:40:03.665 INFO 24814 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default 2020-01-03 17:40:03.892 INFO 24814 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2020-01-03 17:40:03.944 INFO 24814 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 48ms. Found 1 JPA repository interfaces. 2020-01-03 17:40:04.051 INFO 24814 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2020-01-03 17:40:04.149 INFO 24814 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2020-01-03 17:40:04.153 INFO 24814 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2020-01-03 17:40:04.154 INFO 24814 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.29] 2020-01-03 17:40:04.185 INFO 24814 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2020-01-03 17:40:04.185 INFO 24814 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 502 ms 2020-01-03 17:40:04.242 INFO 24814 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2020-01-03 17:40:04.268 INFO 24814 --- [ main] com.zaxxer.hikari.pool.PoolBase : HikariPool-1 - Driver does not support get/set network timeout for connections. (Unsupported feature: [getNetworkTimeout]) 2020-01-03 17:40:04.281 INFO 24814 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2020-01-03 17:40:04.301 INFO 24814 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2020-01-03 17:40:04.326 INFO 24814 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.4.9.Final} 2020-01-03 17:40:04.371 INFO 24814 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final} 2020-01-03 17:40:04.414 INFO 24814 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.SUNDBDialect 2020-01-03 17:40:04.657 INFO 24814 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2020-01-03 17:40:04.660 INFO 24814 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2020-01-03 17:40:04.767 WARN 24814 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2020-01-03 17:40:04.821 INFO 24814 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2020-01-03 17:40:04.899 INFO 24814 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2020-01-03 17:40:04.900 INFO 24814 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.368 seconds (JVM running for 1.528)
通过网络浏览器等访问该地址的/select时,将返回在控制台窗口中生成的查询语句。
2020-01-03 17:40:09.485 INFO 24814 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2020-01-03 17:40:09.485 INFO 24814 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2020-01-03 17:40:09.488 INFO 24814 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms Hibernate: select board0_.bno as bno1_0_, board0_.subject as subject2_0_ from board board0_
如果要创建JAR文件来运行Web服务器,则需其他操作。 根据现有的配置,SUNDB7.jar文件和hibernate-core-5.4.9.Final.jar被视为外部库,因此在创建为JAR文件时不包含在内。可通过注册maven local repository创建JAR文件时
将其包括在内。
$ cd lib -- SUNDB7.jar与hibernate-core-5.4.9.Final.jar文件的路径 $ ls SUNDB7.jar hibernate-core-5.4.9.Final $ mvn install:install-file -Dfile=SUNDB7.jar -DgroupId=SUNDB -DartifactId=SUNDB_test -Dversion=3.3.0 -Dpackaging=jar $ mvn install:install-file -Dfile=hibernate-core-5.4.9.Final.jar -DgroupId=org.hibernate -DartifactId=hibernate-core -Dversion=5.4.9.Final -Dpackaging=jar $ cd .. – project目录 $ mvn package [INFO] [INFO] --------------------------< com.example:demo >-------------------------- [INFO] Building demo 0.0.1-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ demo --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ demo --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ demo --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /home/spring/project/window/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ demo --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ demo --- [INFO] ………… [INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ demo --- [INFO] Building jar: /home/spring/project/window/target/demo-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:2.2.2.RELEASE:repackage (repackage) @ demo --- [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.846 s [INFO] Finished at: 2020-01-06T14:21:16+09:00 [INFO] ------------------------------------------------------------------------
完成packaging后,该文件将生成于target目录。
$ ls target/*.jar target/demo-0.0.1-SNAPSHOT.jar
可使用jar -tf指令来查看jar文件的内容。如通过grep等来查找SUNDB,则很容易查看
是否包含在内。
$ jar -tf demo-0.0.1-SNAPSHOT.jar META-INF/ META-INF/MANIFEST.MF ... BOOT-INF/lib/spring-core-5.2.2.RELEASE.jar BOOT-INF/lib/spring-jcl-5.2.2.RELEASE.jar BOOT-INF/lib/SUNDB_test-3.3.0.jar -- SUNDB7.jar 파일이 포함되어 있다. BOOT-INF/lib/hibernate-core-5.4.9.Final.jar -- hibernate-core-5.4.9.Final.jar 파일이 포함되어 있다. BOOT-INF/lib/mybatis-spring-boot-starter-2.2.2.jar BOOT-INF/lib/mybatis-spring-boot-autoconfigure-2.2.2.jar ...复制
但是,与库一起创建时,还需修改pom.xml中的项目。如下删除scope和systemPath即可。
<dependency> <groupId>SUNDB</groupId> <artifactId>SUNDB_TEST</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </dependency>
登录后发表回复
技术专家
文章
9阅读量
53获赞
7码筑匠心 2024-07-30
码筑匠心 2024-07-30
码筑匠心 2024-07-29
码筑匠心 2024-07-29
码筑匠心 2024-07-29