微服务,现在是一个越来越热的东西,软件架构发展到现在,越来越向轻量级方向演变,微服务的架构,慢慢被很多的中小企业认可。
springboot这个项目,用来构建基于java的微服务应用,它并没有发明什么新的东西,而是让现有的开发配置更好用,更简洁。以前开发spring的项目,至少需要一个applicationContext.xml文件来做配置,但是使用springboot可以做到零配置,减少了很多的配置文件。用springboot的内嵌tomcat可以轻松发布一个web接口服务。
我们来看一个简单的例子,新建一个maven工程,pom.xml
<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.hua.spring.boot</groupId> <artifactId>springboot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
/** * */ package com.hua.spring.boot.springboot; import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } @RequestMapping("/w") @ResponseBody String springBoot() { return "welcome to spring boot"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
启动main程序
写道
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.3.RELEASE)
2016-12-29 09:31:46.383 INFO 7988 --- [ main] c.h.s.boot.springboot.SampleController : Starting SampleController on dell2-PC with PID 7988 (D:\work-space\springboot\target\classes started by dell2 in D:\work-space\springboot)
2016-12-29 09:31:46.386 INFO 7988 --- [ main] c.h.s.boot.springboot.SampleController : No active profile set, falling back to default profiles: default
2016-12-29 09:31:46.446 INFO 7988 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e4784bc: startup date [Thu Dec 29 09:31:46 CST 2016]; root of context hierarchy
2016-12-29 09:31:49.773 INFO 7988 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-12-29 09:31:49.799 INFO 7988 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2016-12-29 09:31:49.801 INFO 7988 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.6
2016-12-29 09:31:50.175 INFO 7988 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2016-12-29 09:31:50.176 INFO 7988 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3736 ms
2016-12-29 09:31:50.418 INFO 7988 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2016-12-29 09:31:50.423 INFO 7988 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2016-12-29 09:31:50.424 INFO 7988 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2016-12-29 09:31:50.424 INFO 7988 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2016-12-29 09:31:50.424 INFO 7988 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2016-12-29 09:31:50.891 INFO 7988 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e4784bc: startup date [Thu Dec 29 09:31:46 CST 2016]; root of context hierarchy
2016-12-29 09:31:51.012 INFO 7988 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String com.hua.spring.boot.springboot.SampleController.home()
2016-12-29 09:31:51.014 INFO 7988 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/w]}" onto java.lang.String com.hua.spring.boot.springboot.SampleController.springBoot()
2016-12-29 09:31:51.025 INFO 7988 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-12-29 09:31:51.025 INFO 7988 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-12-29 09:31:51.073 INFO 7988 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-12-29 09:31:51.074 INFO 7988 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-12-29 09:31:51.154 INFO 7988 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-12-29 09:31:51.407 INFO 7988 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-12-29 09:31:51.513 INFO 7988 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-12-29 09:31:51.524 INFO 7988 --- [ main] c.h.s.boot.springboot.SampleController : Started SampleController in 5.802 seconds (JVM running for 6.349)
2016-12-29 09:32:13.640 INFO 7988 --- [nio-8080-exec-1] o.apache.tomcat.util.http.parser.Cookie : A cookie header was received [1476092382,1478080035; HISTORY="\.\.\.\.\.\.com.mor.server.dubbo.service.DemoServer..../dubboadmin/governance/services/com.mor.server.dubbo.service.DemoServer/providers\.\.\.\.\.\.com.mor.server.dubbo.service.DemoServer..../dubboadmin/governance/applications/hello-world-app/services/com.mor.server.dubbo.service.DemoServer/providers"] that contained an invalid cookie. That cookie will be ignored.Note: further occurrences of this error will be logged at DEBUG level.
2016-12-29 09:32:13.649 INFO 7988 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2016-12-29 09:32:13.649 INFO 7988 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2016-12-29 09:32:13.685 INFO 7988 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 36 ms
启动成功后,通过浏览器访问http://localhost:8080/w ,会出现welcome to spring boot的字符,是不是很简单?通过这一点,我们 可以开发resultful的接口,返回json类型。
开发一个服务是简单了,轻量极了,任何事物都有两面性,我们在传统的nginx/tomcat模式下面,各种调优参数都可以配置,但是在这里就没那么好操作了,有一部分参数可以通过java代码来设置,但是需要开发人员知道他的API。
一个对外的服务,一般都是做集群的,为了防止单点故障,那么我们通常可以把springboot的单个服务做成docker镜像,通过启动多个docker镜像的形式来实现服务的集群,当然,docker镜像的部署可以通过jenkins来动态管理。。
相关推荐
01-SpringBoot介绍 02-SpringBoot为什么火? 03-第一个SpringBoot程序 04-SpringBoot访问静态文件 05-SpringBoot捕获全局异常 06-SpringBoot集成Thymeleaf 07-Thymeleaf数据展示 08-SpringBoot集成Mybatis 09-...
狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神...
SpringBoot原理与流程详解 SpringBoot作为现代Java应用开发的首选框架,因其简化配置、快速启动和集成众多功能的优势,已经成为了业界的标准。本篇文章将深入探讨SpringBoot的核心原理和启动流程,帮助开发者理解其...
### SpringBoot概论 #### 1.1 SpringBoot简介 SpringBoot是Spring家族的一个新兴成员,旨在简化Spring应用的初始化配置。随着Spring框架的发展,虽然它提供了强大的功能,但复杂的XML配置让许多开发者望而却步。...
"SpringBoot基础篇--黑马" 本资源主要介绍了SpringBoot基础篇的课程大纲,旨在帮助学习者快速掌握SpringBoot技术。课程主要分为三个阶段:基础篇、应用篇和原理篇。 基础篇主要介绍了SpringBoot的基础知识,包括...
SpringBoot是Spring框架的一种简化和快速开发工具,它旨在简化创建独立、生产级别的基于Spring的应用程序。SpringBoot摒弃了繁琐的配置,采用“约定优于配置”的原则,使得开发者能够更快速地启动和运行项目。 在...
**基于SpringBoot实现的OPC客户端** 在工业自动化领域,OPC(OLE for Process Control)是一种标准接口,用于不同厂商的设备和系统之间的数据交换。它允许应用程序与PLC(可编程逻辑控制器)和其他自动化设备通信。...
相比较于传统的Spring,SpringBoot具有以下优点:部署简单,SpringBoot内置了Tomcat容器,可以将程序直接编译成一个jar,通过java-jar来运行。编码简单,SpringBoot只需要在pom文件中添加一个starter-web依赖,即可...
springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合...
在本文中,我们将深入探讨如何使用SpringBoot框架开发基于Axis的Web服务。SpringBoot以其便捷的启动和配置方式,已经成为Java开发中的首选框架之一。而 Axis 是一个流行的Apache项目,用于创建和部署Web服务,它提供...
1、基于springboot+知识图谱的数字图书馆系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...
SpringBoot与MyBatis是两个在Java开发领域广泛使用的开源框架。SpringBoot简化了Spring应用的初始搭建以及开发过程,而MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。当这两个框架与...
1、基于SpringBoot+MyBatis前后端开发的博客网站项目源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...
基于springboot+vue开发前后端分离的开源开发框架源码.zip 基于springboot+vue开发前后端分离的开源开发框架源码.zip 基于springboot+vue开发前后端分离的开源开发框架源码.zip 基于springboot+vue开发前后端分离的...
spring-boot-中文参考手册 SpringBoot中文文档 springboot 中文 文档 SpringBoot 帮助您创建可以独立运行的、基于 Spring 的生产级应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您可以从最简单的开始。...
本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握SpringBoot的快速构建Spring项目的方式,并且还深入剖析SpringBoot内部核心原理,如:自动配置原理,start原理,自定义start等, 让你知其然,知其所以然 ...
Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot...
毕业设计 基于springboot mysql Vue的系统开发,供参考,提供说明材料+源代码 毕业设计 基于springboot mysql Vue的系统开发,供参考,提供说明材料+源代码 毕业设计 基于springboot mysql Vue的系统开发,供参考,...
基于SpringBoot+vue+Element-UI 搭建的个人博客系统源码(高分毕设).zip 基于SpringBoot+vue+Element-UI 搭建的个人博客系统源码(高分毕设).zip 基于SpringBoot+vue+Element-UI 搭建的个人博客系统源码(高分毕设...