我正在使用 web 和 jpa 模块创建一个 spring-boot 应用程序。
我有 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">
<modelVersion>4.0.0</modelVersion>
<groupId>myApp</groupId>
<artifactId>myApp</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.0.4.RELEASE</spring.boot.version>
</properties>
<dependencies>
<!--Spring-boot dependencies-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
<!--deploy on remote tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- DATABASE-->
<!--In-memory database-->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.14.2.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<finalName>myAppFileName</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
该应用程序内置在战争中并且可以正常启动。使用内存基础德比
我需要切换到外部数据库,例如mySql,我去掉了对derby的依赖:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.14.2.0</version>
<scope>runtime</scope>
</dependency>
我添加依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>provided</scope>
</dependency>
更改 application.propeties
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydb
spring.datasource.username=user
spring.datasource.password=111111
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
数据库是在应用程序启动时创建的,但没有表。
但是当我启动应用程序时出现错误:
****************************** 应用程序无法启动
描述:
无法配置数据源:未指定“url”属性,并且无法配置嵌入式数据源。
原因:无法确定合适的驱动程序类
行动:
考虑以下几点:如果您想要一个嵌入式数据库(H2、HSQL 或 Derby),请将其放在类路径中。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有配置文件处于活动状态)。
2018 年 9 月 10 日 19:43:00.935 严重 [RMI TCP 连接(5)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:开始:
org.apache.catalina.LifecycleException:无法在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) 在 org.apache 启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] .catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java :734) 在 org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1736) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:第498章.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431) 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method。在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java: 调用(Method.java:498)300) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 javax.management.remote.rmi.RMIConnectionImpl 的 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) .doOperation(RMIConnectionImpl.java:1468) 在 javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 在 javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)在 javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect。在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:361) 在 sun.rmi.transport 的 java.lang.reflect.Method.invoke(Method.java:498) 的 DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport .serviceCall(Transport.java:196) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 在sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler 的 java.security.AccessController.doPrivileged(Native Method)。在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread 的 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 运行(TCPTransport.java:682) .run(Thread.java:748)
mvn 依赖:分析
[INFO] --- maven-dependency-plugin:3.0.2:analyze (default-cli) @ SBRiskDataSvcs ---
[WARNING] Used undeclared dependencies found:
[WARNING] org.springframework.data:spring-data-commons:jar:2.0.9.RELEASE:compile
[WARNING] org.springframework.boot:spring-boot:jar:2.0.4.RELEASE:compile
[WARNING] io.springfox:springfox-spi:jar:2.7.0:compile
[WARNING] org.springframework:spring-context:jar:5.0.8.RELEASE:compile
[WARNING] io.springfox:springfox-core:jar:2.7.0:compile
[WARNING] org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.2.Final:compile
[WARNING] org.springframework:spring-web:jar:5.0.8.RELEASE:compile
[WARNING] org.springframework:spring-beans:jar:5.0.8.RELEASE:compile
[WARNING] org.springframework.data:spring-data-jpa:jar:2.0.9.RELEASE:compile
[WARNING] io.springfox:springfox-spring-web:jar:2.7.0:compile
[WARNING] org.springframework.boot:spring-boot-autoconfigure:jar:2.0.4.RELEASE:compile
[WARNING] Unused declared dependencies found:
[WARNING] org.springframework.boot:spring-boot-starter-web:jar:2.0.4.RELEASE:compile
[WARNING] org.springframework.boot:spring-boot-starter-data-jpa:jar:2.0.4.RELEASE:compile
[WARNING] org.springframework.boot:spring-boot-starter-test:jar:2.0.4.RELEASE:test
[WARNING] org.springframework.boot:spring-boot-starter-tomcat:jar:2.0.4.RELEASE:provided
[WARNING] io.springfox:springfox-swagger-ui:jar:2.7.0:compile
[WARNING] mysql:mysql-connector-java:jar:5.1.46:runtime
更改为运行时。
提供 -> 仅在编译时可用。在运行时(即将发生的热量)没有这种依赖关系。