Spring 启动应用程序未启动嵌入式 tomcat
Spring boot application not starting embedded tomcat
我是 Spring 启动应用程序的新手。我有一个任务是创建应该由 rest 控制器处理的公共 crud 存储库。我只是从一些例子开始。但是我的应用程序没有启动嵌入式tomcat。我的其余控制器 URI 也没有映射。这是 maven 模块项目,所有依赖项都在 parent maven 中配置。如何解决这个问题。
这是我的代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CRUDEngineApplication {
public static void main(String[] args) {
SpringApplication.run(CRUDEngineApplication.class, args);
}
}
控制器是
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import com.scm.services.CRUDEngineService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController("/api")
public class CRUDEngineController {
@Autowired
private CRUDEngineService crudEngineService;
public static final Logger logger =
LoggerFactory.getLogger(CRUDEngineController.class);
/* public void setProductService(CRUDEngineService crudEngineService) {
this.crudEngineService = crudEngineService;
}*/
@RequestMapping(value = "/user", method = RequestMethod.POST)
public ResponseEntity<?> createUser(@RequestBody Object entity) {
System.out.println("Check point entered.");
crudEngineService.save(entity);
return new ResponseEntity<String>( HttpStatus.CREATED);
}
}
服务接口为
import java.util.UUID;
public interface CRUDEngineService {
void save(Object entity);
void delete(UUID id);
}
服务实现class是
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.scm.repositories.CRUDEngineRespository;
import java.util.UUID;
@Service
public class CRUDEngineServiceImpl implements CRUDEngineService {
@Autowired
private CRUDEngineRespository productRepository;
@Override
public void save(Object entity) {
productRepository.save(entity);
}
@Override
public void delete(UUID id) {
productRepository.delete(id);
}
}
并且 crud 存储库实现是
import java.util.UUID;
import org.springframework.data.repository.CrudRepository;
public interface CRUDEngineRespository extends CrudRepository<Object, UUID>
{
}
Child pom.xml 是
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.scm</groupId>
<artifactId>scm-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>crudEngineService</artifactId>
<packaging>war</packaging>
<name>crudEngineService</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Parent pom 是
<?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>com.scm</groupId>
<artifactId>scm-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>scm-parent</name>
<description>scm project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<modules>
<module>userService</module>
<module>authenticationService</module>
<module>dataLayerService</module>
<module>uiService</module>
<module>crudEngineService</module>
</modules>
控制台结果是
2017-10-07 13:03:32.348 INFO 6508 --- [ main]
c.s.configuration.CRUDEngineApplication : Starting CRUDEngineApplication on
STS-STP-A808 with PID 6508 (started by muthuvignesh.k in E:\Septa_Bench\STS
Septa Repo\ppts_scm\scm-parent\crudEngineService)
2017-10-07 13:03:32.350 INFO 6508 --- [ main]
c.s.configuration.CRUDEngineApplication : No active profile set, falling
back to default profiles: default
2017-10-07 13:03:32.378 INFO 6508 --- [ main]
s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4df828
d7: startup date [Sat Oct 07 13:03:32 IST 2017]; root of context hierarchy
2017-10-07 13:03:32.766 WARN 6508 --- [ main]
o.h.v.m.ParameterMessageInterpolator : HV000184:
ParameterMessageInterpolator has been chosen, EL interpolation will not be supported
2017-10-07 13:03:32.872 WARN 6508 --- [ main] o.h.v.m.ParameterMessageInterpolator : HV000184: ParameterMessageInterpolator has been chosen, EL interpolation will not be supported
2017-10-07 13:03:33.052 INFO 6508 --- [ main] com.datastax.driver.core.Native : Could not load JNR C Library, native system calls through this library will not be available (set this logger level to DEBUG to see the full stack trace).
2017-10-07 13:03:33.052 INFO 6508 --- [ main] com.datastax.driver.core.ClockFactory : Using java.lang.System clock to generate timestamps.
2017-10-07 13:03:33.197 INFO 6508 --- [ main] com.datastax.driver.core.NettyUtil : Did not find Netty's native epoll transport in the classpath, defaulting to NIO.
2017-10-07 13:03:33.541 INFO 6508 --- [ main] c.d.d.c.p.DCAwareRoundRobinPolicy : Using data-center name 'datacenter1' for DCAwareRoundRobinPolicy (if this is incorrect, please provide the correct datacenter name with DCAwareRoundRobinPolicy constructor)
2017-10-07 13:03:33.543 INFO 6508 --- [ main] com.datastax.driver.core.Cluster : New Cassandra host /10.10.30.125:9042 added
2017-10-07 13:03:33.795 INFO 6508 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-10-07 13:03:33.804 INFO 6508 --- [ main] c.s.configuration.CRUDEngineApplication : Started CRUDEngineApplication in 1.619 seconds (JVM running for 2.002)
从 pom.xml 中删除 <scope>provided</scope>
,然后尝试重新 运行。如果您希望将 war 部署到任何其他独立 tomcat.
,请使用 provided
尝试依赖管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
我是 Spring 启动应用程序的新手。我有一个任务是创建应该由 rest 控制器处理的公共 crud 存储库。我只是从一些例子开始。但是我的应用程序没有启动嵌入式tomcat。我的其余控制器 URI 也没有映射。这是 maven 模块项目,所有依赖项都在 parent maven 中配置。如何解决这个问题。
这是我的代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CRUDEngineApplication {
public static void main(String[] args) {
SpringApplication.run(CRUDEngineApplication.class, args);
}
}
控制器是
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import com.scm.services.CRUDEngineService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController("/api")
public class CRUDEngineController {
@Autowired
private CRUDEngineService crudEngineService;
public static final Logger logger =
LoggerFactory.getLogger(CRUDEngineController.class);
/* public void setProductService(CRUDEngineService crudEngineService) {
this.crudEngineService = crudEngineService;
}*/
@RequestMapping(value = "/user", method = RequestMethod.POST)
public ResponseEntity<?> createUser(@RequestBody Object entity) {
System.out.println("Check point entered.");
crudEngineService.save(entity);
return new ResponseEntity<String>( HttpStatus.CREATED);
}
}
服务接口为
import java.util.UUID;
public interface CRUDEngineService {
void save(Object entity);
void delete(UUID id);
}
服务实现class是
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.scm.repositories.CRUDEngineRespository;
import java.util.UUID;
@Service
public class CRUDEngineServiceImpl implements CRUDEngineService {
@Autowired
private CRUDEngineRespository productRepository;
@Override
public void save(Object entity) {
productRepository.save(entity);
}
@Override
public void delete(UUID id) {
productRepository.delete(id);
}
}
并且 crud 存储库实现是
import java.util.UUID;
import org.springframework.data.repository.CrudRepository;
public interface CRUDEngineRespository extends CrudRepository<Object, UUID>
{
}
Child pom.xml 是
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.scm</groupId>
<artifactId>scm-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>crudEngineService</artifactId>
<packaging>war</packaging>
<name>crudEngineService</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Parent pom 是
<?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>com.scm</groupId>
<artifactId>scm-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>scm-parent</name>
<description>scm project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<modules>
<module>userService</module>
<module>authenticationService</module>
<module>dataLayerService</module>
<module>uiService</module>
<module>crudEngineService</module>
</modules>
控制台结果是
2017-10-07 13:03:32.348 INFO 6508 --- [ main]
c.s.configuration.CRUDEngineApplication : Starting CRUDEngineApplication on
STS-STP-A808 with PID 6508 (started by muthuvignesh.k in E:\Septa_Bench\STS
Septa Repo\ppts_scm\scm-parent\crudEngineService)
2017-10-07 13:03:32.350 INFO 6508 --- [ main]
c.s.configuration.CRUDEngineApplication : No active profile set, falling
back to default profiles: default
2017-10-07 13:03:32.378 INFO 6508 --- [ main]
s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4df828
d7: startup date [Sat Oct 07 13:03:32 IST 2017]; root of context hierarchy
2017-10-07 13:03:32.766 WARN 6508 --- [ main]
o.h.v.m.ParameterMessageInterpolator : HV000184:
ParameterMessageInterpolator has been chosen, EL interpolation will not be supported
2017-10-07 13:03:32.872 WARN 6508 --- [ main] o.h.v.m.ParameterMessageInterpolator : HV000184: ParameterMessageInterpolator has been chosen, EL interpolation will not be supported
2017-10-07 13:03:33.052 INFO 6508 --- [ main] com.datastax.driver.core.Native : Could not load JNR C Library, native system calls through this library will not be available (set this logger level to DEBUG to see the full stack trace).
2017-10-07 13:03:33.052 INFO 6508 --- [ main] com.datastax.driver.core.ClockFactory : Using java.lang.System clock to generate timestamps.
2017-10-07 13:03:33.197 INFO 6508 --- [ main] com.datastax.driver.core.NettyUtil : Did not find Netty's native epoll transport in the classpath, defaulting to NIO.
2017-10-07 13:03:33.541 INFO 6508 --- [ main] c.d.d.c.p.DCAwareRoundRobinPolicy : Using data-center name 'datacenter1' for DCAwareRoundRobinPolicy (if this is incorrect, please provide the correct datacenter name with DCAwareRoundRobinPolicy constructor)
2017-10-07 13:03:33.543 INFO 6508 --- [ main] com.datastax.driver.core.Cluster : New Cassandra host /10.10.30.125:9042 added
2017-10-07 13:03:33.795 INFO 6508 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-10-07 13:03:33.804 INFO 6508 --- [ main] c.s.configuration.CRUDEngineApplication : Started CRUDEngineApplication in 1.619 seconds (JVM running for 2.002)
从 pom.xml 中删除 <scope>provided</scope>
,然后尝试重新 运行。如果您希望将 war 部署到任何其他独立 tomcat.
尝试依赖管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>