我已经学习了用于构建REEST服务的Spring.io入门教程https://spring.io/guides/gs/rest-service/。问题是,本教程只解释了如何使用spring Boot生成嵌入tomcat的独立运行jar。
有没有一种方法可以从头开始创建一个项目,生成一个war来部署在一个已经存在的tomcat实例上?
附注:我在stackoverflow上的Tomcat中发现了一个以前的thread Spring RESTful服务作为WAR(而不是JAR)来处理同样的问题。问题是,已接受的答案和建议并不能完全解决我的问题,因为我并不是在寻找修改独立应用程序spring boot项目的方法,使其能够在外部tomcat容器上工作,而是希望找到一个完全不涉及spring boot的“更干净”的解决方案。(我不太确定在这里该怎么做,因为我对StackOverflow还是个新手。我希望打开一个新问题是正确的步骤)。
创建rest控制器不需要Spring Boot。
请参阅spring framework文档,了解如何设置MVC https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#spring-web
MVC设置(DispatcherServlet
)取决于您的spring版本,您可以使用xml或编程设置:https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-servlet
一旦设置好了,您就可以向应用程序添加rest控制器。注意,rest控制器(@RestController
注释)是一个组合了@ResponseBody
和@controller
的原型注释,换句话说,控制器返回响应体中的对象,而不是返回视图。
这是一个很好的例子来解释我上面所说的:http://www.programming-free.com/2014/01/spring-mvc-40-restful-web-services.html
我有一个rest服务,实现如下- 我得到了所有的头和响应状态正确,但我没有得到json响应。这里怎么了?
我只是尝试使用协议缓冲区为Go语言生成代码。但是无法使用原型命令生成服务。 上面是一个虚拟的原型文件,我试图将其转换为Go语言。但是无法生成正确的文件,因为在我的系统中,它无法将行识别为服务。 我正在windows系统上使用以下版本的protoc: 使用以下命令生成代码: \greet\greetpb\greet.proto--go_out=。 下面是由上述命令生成的go代码: 在以后的go代码中
4.4.1.4 创建/使用内部服务 内部服务是除了内部应用以外的应用禁止使用的服务。 它们用于内部开发的应用,以便安全地共享信息和功能。 以下是使用Messenger绑定类型服务的示例。 要点(创建服务): 定义内部签名权限。 需要内部签名权限。 不要定义意图过滤器,并将导出属性显式设置为true。 确认内部签名权限是由内部应用定义的。 尽管意图是从内部应用发送的,但要小心并安全地处理接收到的意图
4.4.1.3 创建/使用伙伴服务 伙伴服务是只能由特定应用使用的服务。 系统由伙伴公司的应用和内部应用组成,用于保护在伙伴应用和内部应用之间处理的信息和功能。 以下是 AIDL 绑定类型服务的示例。 要点(创建服务): 不要定义意图过滤器,并将导出属性显式设置为true。 验证请求应用的证书是否已在自己的白名单中注册。 请勿(无法)通过onBind(onStartCommand, onHandl
4.4.1.2 创建/使用公共服务 公共服务是应该由未指定的大量应用使用的服务。 有必要注意,它可能会收到恶意软件发送的信息(意图等)。 在使用公共服务的情况下,有必要注意,恶意软件可能会收到要发送的信息(意图等)。 下面展示了如何使用startService类型服务的示例代码。 要点(创建服务): 将导出属性显式设置为true。 小心并安全地处理接收到的意图。 返回结果时,请勿包含敏感信息。 A
4.4.1.1 创建/使用私有服务 私有服务是不能由其他应用启动的服务,因此它是最安全的服务。 当使用仅在应用中使用的私有服务时,只要您对该类使用显式意图,那么您就不必担心意外将它发送到任何其他应用。 下面展示了如何使用startService类型服务的示例代码。 要点(创建服务): 将导出属性显式设置为false。 小心并安全地处理收到的意图,即使意图从相同应用发送。 由于请求应用在同一应用中,