每个框架的联动和执行方法会根据环境而有所不同,框架级别的问题需用户自行解决。
使用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阅读量
138获赞
7码筑匠心 2024-07-30
码筑匠心 2024-07-30
码筑匠心 2024-07-29
码筑匠心 2024-07-29
码筑匠心 2024-07-29

