Google Appengine标准上的Spring Boot-REST API

时间:2019-02-11 08:17:50

标签: java rest spring-boot google-app-engine

我正在尝试通过命令mvn appengine:run在本地appengine模拟器上运行我的代码,并且没有错误,仅此而已,它找不到任何RestController(例如:无文件)找到:/ setiaalam / amenities)。

此外,启动中没有显示 Spring Boot徽标,所以我怀疑我需要为其指定servlet初始化吗?在我自己的Apache Tomcat Eclipse环境中,它运行良好,但这仅在我要“ 运行”主类的情况下有效。

更具体地说,我没有创建自定义servlet,我只想将其迁移到Google Cloud AppEngine Standard-尽管没有错误,但根本没有Spring Boot启动徽标。尝试使用Postmen访问在本地工作的任何GET API总是返回404。尝试从以前的Apache Tomcat本地主机访问它时没有问题。

是的,我在这里遵循github指南: Link to Github for Spring boot Google Appengine Standard

它没有提及修改web.xml的任何内容。

我在这里想念什么吗?

代码(主应用):

@SpringBootApplication
@EnableJpaAuditing
public class SetiaAlamApplication{

public static void main(String[] args) {
    SpringApplication.run(SetiaAlamApplication.class, args);
}

}

代码(控制器的1):

@RestController
@RequestMapping("/setiaalam")
public class AmenityController {

@Autowired
AmenityDAO amenityDAO;

//service to get all amenities
@GetMapping("/amenities")
public List<Amenity> getAllAmenities(){
    return amenityDAO.findAll();
}

代码(所需的SpringBootServletInitializer):

public class ServletInitializer extends SpringBootServletInitializer {

@Override
 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(SetiaAlamApplication.class); 
 }
}

application.properties:

# Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url = jdbc:mysql://ipaddress:3306/setiaalam? 
useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
spring.datasource.username = hidden
spring.datasource.password = hidden

# Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen 
database
spring.jpa.properties.hibernate.dialect = 
org.hibernate.dialect.MySQL5Dialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

1 个答案:

答案 0 :(得分:-1)

好的,已解决问题。我该如何解决?

第1步 下载最新的Eclipse。

第2步 接下来,添加来自Eclipse Market的Spring Tool功能。请注意,如果找不到Eclipse Market,则需要添加1st。简单的Google会指导您如何操作。

第3步 然后添加Google Cloud Tool(来自Eclipse Market)。

第4步 添加完成后,创建一个新的Spring项目(通过Eclipse,我以前没有,但是使用spring.io)。

第5步 根据生成的单个主应用程序,根据Google App Engine标准的Google指南在pom.xml上更改所需的配置。

步骤6 完成后,创建一个简单的1控制器,该控制器仅返回单个String文本。本地部署-当然,在Jetty上工作后,将所有类一一移到这个新项目中。

重要说明 当然,如果您的项目(如我的项目)需要更多和更多的依赖关系(例如Google API,Hibernate),则需要手动将其添加到pom.xml中。 此外,为确保您会遇到Eclipse“无法更改动态Web模块构面”的问题,我遵循简单的指南,将项目文件org.eclipse.wst.common.project.facet.core.xml相应地更改为3.0 jst.web。

谢谢