微服务模板: 后端Hello World - Java SpringBoot REST

本教程介绍如何使用Apache CXF和Spring RestTemplate构建、部署和扩展云就绪的Predix微服务。涵盖最佳实践,如云清单、属性、测试用例及后端微服务的实现。提供两个GitHub项目示例,指导您完成从开发到推送微服务至云的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您将学习什么
学习构建、部署和扩展云就绪Predix微服务,包括云清单、属性、测试用例和后端微服务的最佳实践。本教程将详细介绍实现REST api的Hello World微服务模板。
我们有两个github项目,其中一个使用Apache CXF实现JAX-RS 2.0标准Java注释@GET、@PUT、@POST、@DELETE等。另一个使用Spring RestTemplate。Spring RestTemplate仍使用最初的spring注释,例如@RequestMapping(method = RequestMethod.DELETE)。
两个项目均利用Spring的所有其他功能,在我们的REST实现中包括Spring安全筛选器或(其他筛选器)。在将来的教程中当我们介绍如何在REST API中实现安全和授权机制以便在Predix云中创建安全微服务时,您将会看到这一点非常有用。
每个后端微服务模板项目均共享以下特性
• 测试用例与测试用例框架
• 外部属性文件
• REST实现与框架
• 通过一个清单文件实现云就绪
• 本机、DEV、QA、Stage、Prod等环境
• 可持续集成
您需要学习什么
开发工具箱教程(可选)
您需要设置什么
代理
如果您通过公司的代理服务器访问互联网,请回顾关于设置代理的教程。
需要的工具
如果您不使用开发工具箱,确保用以下工具配置您的开发环境。
CloudFoundry CLI
Git
Java SE开发套件(JDK)
Maven
安装自动工具
• 在Mac OSX上,在终端窗口中运行以下命令
bash <( curl https://raw.githubusercontent.com/PredixDev/local-setup/master/setup-mac.sh ) –cf –git –jdk –maven
• 在Windows上,在“开始”菜单的“附件”中,右击“命令提示符”并选择“以管理员身份运行”。然后复制以下命令并运行。
@powershell -Command “(new-object net.webclient).DownloadFile(‘https://raw.githubusercontent.com/PredixDev/local-setup/master/setup-windows.bat‘,’%TEMP%\setup-windows.bat’)” && “%TEMP%\setup-windows.bat” /cf /git /jdk /maven
您需要做什么
只需3步您就可以完成一次Cloud Foundry微服务。1.Git clone ,2. mvn clean package,3. cf push。这样,让我们详细了解一下这个微服务模板的功能,您就可以对其进行扩展,以便在云上创建您自己的微服务。
下载项目
1. 如果您使用公司的互联网代理服务器,您可能需要设置您的代理环境变量,并在Maven settings.xml文件中设置代理。查看我们的设置代理教程了解更多信息。
2. 使用Git克隆项目,然后转到项目目录。
$ git clone https://github.com/PredixDev/predix-microservice-cf-jsr.git $ cd predix-microservice-cf-jsr
注:如果您感兴趣,我们有另外一个使用Spring Rest模板的项目。我们将会在下面指出细微差别。使用以下命令下载该项目。
$ git clone https://github.com/PredixDev/predix-microservice-cf-spring.git

  1. 使用Maven,构建并打包代码
    $ mvn clean package note: mvn clean install may run integration tests against microservices you may not have set up yet

将微服务推送到云上
CloudFoundry推送命令检索从manifest.yml文件推送微服务的属性。
请查看predix-microservice-cf manifest.yml,其中提供了用于推送cloud foundry应用程序的属性和说明

  1. 将应用程序推送到云上,用您的名称替换。该名称在整个云上的所有应用程序中必须是唯一的。推送命令的这个版本会覆盖清单文件中使用的项目名称。
    $ cf push -predix-microservice-cf-jsr
  2. 如果要查看云中微服务的API:
    Copy the url from the output of the push command then in your browser, enter https:// and then paste the url https://(cloud-url-here)

查看您在云中的微服务
您应该在您的浏览器中看到“Greetings from Predix Spring Boot CXF!”
图片描述
如果您选择上面的Spring rest-template项目,将会看到
图片描述

载入Eclipse
使用Eclipse更改REST微服务或在本地运行微服务。您可以通过转到标题为将微服务推送到云上的部分直接将微服务推送到云上。
EclipseEclipse STS - Springsource工具套件均支持
在Ecli[链接内容]pse内执行以下操作:
Using the File/Import menu item select Maven/Existing Maven Projects and click Next Browse to the predix-microservice-cf-jsr dir and click Finish.

REST API
作为调节应用程序的一部分,Spring启动Tomcat web容器,GET、PUT、POST、DELETE REST URL在其中呈现。CXF执行的JSR 339 Spec定义了我们在DefaultService.javaDynamicServiceImpl.java文件中写入的注释,其接口为DynamicService.java。

DefaultService直接在predix-microservice-cf-jsr-cxf-context.xml spring文件中注册。

DynamicServiceImpl显示了一个在自身的代码中通过init()方法注册CXF的不同方法。
@PostConstruct public void init() { this.serviceManagerService.createRestWebService(this, null); }
不论哪种方法,@Path、@GET、@PUT、@POST或@DELETE等REST注释在您创建REST端点时均可用。在本示例中,当有人向http://localhost:9092/health url发送一个HTTP GET请求时,将调用greetings()方法。
@GET @Path(“health/”) public Response greetings() { }
现在您可以在greetings()方法中完全控制微服务功能的实现。

在本地尝试
1. 使用Eclipse,启动应用程序。
Right Click the predix-microservice-cf select Run As / Java Application if prompted, choose Application.java and click OK or in Eclise STS - Right Click predix-microservice-cf project and select Run As / Spring Boot Application
2. 如果要检查微服务的api,打开一个浏览器并导航至:
http://localhost:9092

查看结果
1. 您应该在您的浏览器中看到“Greetings from Predix Spring Boot CXF!”
图片描述
如果您选择上面的spring rest-template项目,将会看到

  1. 查看API explorer链接中的Swagger文件。微服务记录在/api url中。
  2. 查看/health url中的微服务健康状态链接。
  3. 使用Github页面查看/docs url中的文件。我们提供在README.md中请求的一个动态index.html。
  4. 查看Github页面上的Java Docs。
  5. 所有基于微服务模板的微服务将sources.jar和javadoc.jar部署到artifactory。通过以下操作简单构建您的应用程序:
     mvn clean source:jar javadoc:jar package
     mvn deploy将这些命令部署到您的maven存储库中。请注意,由于’mvn install’将运行集成测试,因此您可能需要设置属性文件,以指向您的predix服务实例。
  6. 确保在Eclipse中停止微服务,以便为下一个教程案例释放端口。

当您启动微服务时会发生什么?
微服务模板是一个SpringBoot应用程序,简单来说,它意味着这个基于REST的微服务的所有标准boiler-plate行为都由Spring来处理。所有行为均以Application.java中启动Spring上下文的main()方法开始,。以下代码生成一个完整的微服务,这样您就可以快速开始编写您的应用程序。
public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(Application.class); ApplicationContext ctx = springApplication.run(args);
值得注意的(在文件的底部定义)是CXFServlet bean,它将所有以”/service”开头的HTTP请求路由至您的代码以及网页应用程序将要运行的Tomcat web容器。
@Bean public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() { return new TomcatEmbeddedServletContainerFactory(); } @Bean public ServletRegistrationBean servletRegistrationBean() { return new ServletRegistrationBean(new CXFServlet(), “/service/*”); }
@ImportResource注释标示某些xml文件的位置,以设置更多Bean(通过Spring注册的Java类)。请注意spring xml文件的--context.xml的命名规范。我们将”cxf”上下文设置文件与”scan”上下文文件分隔开。
@ImportResource( { “classpath*:META-INF/spring/predix-microservice-cf-jsr-cxf-context.xml“, “classpath*:META-INF/spring/predix-microservice-cf-jsr-scan-context.xml” }
启动后,Spring会配置组成应用程序的所有Bean。“component-scan”标示在哪个java包中寻找更多的Bean。

该类只需要一个注释(例如@Component)
@Component @Path(“/”) public class DefaultService
Spring将在内存中创建该类并将其自动装配(将其公开)至其他Bean。这就是所谓的依赖注入或控制反转,当您在需要模拟测试行为而创建测试用例时这是一个非常有用的工具。

您可以使用一个@ComponentScan注释列出驻留有Bean的所有java包,或者您也可以将所有Spring Bean XML条目放在一个文件中。有时,最好是创建一个单独的文件用于配置扫描位置或属性文件的位置。这样做可以为需要重载特定功能的测试用例提供方便。另外有时候,当一个Spring项目是另一个项目的“依赖”时,扫描文件夹和属性文件等特定功能需要被重载。

Action中的微服务模板
多个教程指南中的所有样本微服务,例如RMD参考应用程序、构建一个基本应用程序和边缘启动程序,均利用微服务模板作为一个起始点。这些微服务与UAA、资产、时间序列、分析、Predix机器、ACS和UAA等集成在一起。而且,每个微服务均使用多个实用程序项目或SDK

您学到了什么
现在,您已拥有一个可用于在Predix云中创建应用程序的微服务模板。简单更改REST url并添加您的工业互联网功能。如果要查看模板的更多功能,请访问微服务模板:后端的更多功能 - Java SpringBoot REST

活动概况:为了让国内开发者第一时间了解试用Predix 平台,及时跟踪了解国际工业互联网的最新技术,GE数字强调文字创新坊推出了Predix 开发者试用计划,并将提供Predix 的基础服务、微服务模块、开发工具等给有兴趣的开发者试用,试用期为3个月,这也是开发者进行工业化数字转型的第一步。需要注意的是该账号仅作开发评估目的使用,不能应用于任何商业用途,最终注册结果以邮件为准。并且GE保留对相关帐号申请、管理和使用的解释权。试用结束后,GE不保留任何开发者数据!
扫描下方二维码参与报名:
图片描述

<think>好的,我现在需要帮用户介绍一下如何使用Spring Boot。用户之前已经询问过关于阿里云OSS获取图片数据流的问题,现在可能是在开发一个完整的应用,需要后端框架的支持。Spring Boot是一个常用的Java后端框架,用户可能想快速搭建一个RESTful API或者微服务。 首先,我要确定用户的需求层次。他们可能刚接触Spring Boot,需要基础介绍和快速入门步骤。考虑到用户之前的问题涉及代码实现,他们可能有实际的开发经验,但可能对Spring Boot不熟悉,所以需要简明扼要的讲解,避免过于复杂的理论。 接下来,我需要涵盖Spring Boot的核心优势,比如自动配置、内嵌服务器、简化依赖管理等。这些特点能帮助用户理解为什么选择Spring Boot而不是传统的Spring框架。同时,提供一个简单的示例代码,让用户能够快速上手,看到效果。 用户可能对如何创建REST API、连接数据库等实际应用场景感兴趣,所以需要包括这些内容。另外,高级特性如Actuator、Security、Cloud集成等,可以稍微提及,让用户知道Spring Boot的扩展能力。 还要注意用户可能的开发环境,比如使用Maven或Gradle,所以需要给出两种构建工具的配置示例。同时,强调Spring Boot的约定优于配置的理念,减少用户的配置负担。 最后,确保回答结构清晰,步骤明确,代码示例正确,并且给出参考链接方便用户深入查阅。考虑到用户之前的问题涉及阿里云服务,可能在后续集成云存储时,可以结合Spring Cloud Alibaba等工具,但这次回答主要集中在Spring Boot本身,保持主题明确。</think>以下是关于Spring Boot的详细介绍: 📌 **Spring Boot核心优势**: 1. 开箱即用的自动配置(Auto-Configuration) 2. 内嵌Tomcat/Jetty/Undertow服务器 3. 简化Maven/Gradle依赖管理 4. 生产级监控端点(Actuator) 5. 与Spring生态系统无缝集成 🛠️ **快速入门步骤**: 1. **创建项目**(任选其一): ```bash # 使用Spring Initializr curl https://start.spring.io/starter.zip -d dependencies=web \ -d type=maven-project -d language=java -d packageName=com.example \ -d name=demo -o demo.zip # 或使用IDE的Spring Initializr向导 ``` 2. **基础项目结构**: ``` src/ ├─ main/ │ ├─ java/ │ │ └─ com/example/demo/ │ │ ├─ DemoApplication.java # 主启动类 │ │ └─ controller/ # MVC控制器 │ └─ resources/ │ ├─ static/ # 静态资源 │ ├─ templates/ # 模板文件 │ └─ application.properties # 配置文件 ``` 3. **编写REST接口**: ```java @RestController public class HelloController { @GetMapping("/hello") public String hello(@RequestParam(required = false, defaultValue = "World") String name) { return "Hello " + name + "!"; } } ``` 4. **运行与测试**: ```bash mvn spring-boot:run # 访问 http://localhost:8080/hello?name=Spring ``` 🔧 **核心配置示例**(application.yml): ```yaml server: port: 8081 servlet: context-path: /api spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: secret driver-class-name: com.mysql.cj.jdbc.Driver ``` 🚀 **典型应用场景**: 1. **Web开发**: ```java @Configuration public class WebConfig implements WebMvcConfigurer { // 自定义拦截器、跨域配置等 } ``` 2. **数据访问**: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { // 自动生成SQL实现 List<User> findByEmailContaining(String email); } ``` 3. **安全控制**: ```java @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated() .and().formLogin(); } } ``` 💡 **高级特性**: 1. **Actuator监控**: ```properties management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always ``` 2. **Profile多环境配置**: ```bash java -jar myapp.jar --spring.profiles.active=prod ``` 3. **自定义Starter**: ```java @Configuration @ConditionalOnClass(MyService.class) @EnableConfigurationProperties(MyProperties.class) public class MyAutoConfiguration { // 自动配置逻辑 } ``` 📊 **性能优化建议**: 1. 使用`spring-boot-devtools`加速开发 2. 配置连接池(HikariCP推荐) 3. 启用GZIP压缩: ```properties server.compression.enabled=true server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript ``` 📚 **学习资源**: - 官方文档:[Spring Boot Reference](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/) - 实战书籍:《Spring Boot实战》《Spring揭秘》 - 社区资源:Spring中国教育中心(spring4all.com) 💻 **完整启动类示例**: ```java @SpringBootApplication @EnableCaching @EnableAsync public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` Spring Boot通过"约定优于配置"的理念,使开发者能快速构建生产级应用,建议从2.7.x版本开始学习(注意:2022年11月后3.0+版本开始要求Java 17+)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值