`
chenhua_1984
  • 浏览: 1252124 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

springboot

    博客分类:
  • java
阅读更多

      微服务,现在是一个越来越热的东西,软件架构发展到现在,越来越向轻量级方向演变,微服务的架构,慢慢被很多的中小企业认可。

 

     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来动态管理。。

 

    

 

 

 

分享到:
评论

相关推荐

    SpringBoot视频教程 百度云

    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笔记+源码 狂神...

    springboot2教程pdf

    ### SpringBoot概论 #### 1.1 SpringBoot简介 SpringBoot是Spring家族的一个新兴成员,旨在简化Spring应用的初始化配置。随着Spring框架的发展,虽然它提供了强大的功能,但复杂的XML配置让许多开发者望而却步。...

    SpringBoot基础篇--黑马

    "SpringBoot基础篇--黑马" 本资源主要介绍了SpringBoot基础篇的课程大纲,旨在帮助学习者快速掌握SpringBoot技术。课程主要分为三个阶段:基础篇、应用篇和原理篇。 基础篇主要介绍了SpringBoot的基础知识,包括...

    狂神说springboot笔记.zip

    SpringBoot是Spring框架的一种简化和快速开发工具,它旨在简化创建独立、生产级别的基于Spring的应用程序。SpringBoot摒弃了繁琐的配置,采用“约定优于配置”的原则,使得开发者能够更快速地启动和运行项目。 在...

    一个项目的SpringBoot微服务改造过程

    相比较于传统的Spring,SpringBoot具有以下优点:部署简单,SpringBoot内置了Tomcat容器,可以将程序直接编译成一个jar,通过java-jar来运行。编码简单,SpringBoot只需要在pom文件中添加一个starter-web依赖,即可...

    基于springboot实现的opc 客户端

    **基于SpringBoot实现的OPC客户端** 在工业自动化领域,OPC(OLE for Process Control)是一种标准接口,用于不同厂商的设备和系统之间的数据交换。它允许应用程序与PLC(可编程逻辑控制器)和其他自动化设备通信。...

    springboot整合 netty做心跳检测

    springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合...

    基于springboot+知识图谱的数字图书馆系统源码.zip

    1、基于springboot+知识图谱的数字图书馆系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...

    SpringBoot+mybatis+Oracle整合代码

    SpringBoot与MyBatis是两个在Java开发领域广泛使用的开源框架。SpringBoot简化了Spring应用的初始搭建以及开发过程,而MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。当这两个框架与...

    基于SpringBoot+MyBatis前后端开发的博客网站项目源码.zip

    1、基于SpringBoot+MyBatis前后端开发的博客网站项目源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...

    基于springboot+vue开发前后端分离的开源开发框架源码.zip

    基于springboot+vue开发前后端分离的开源开发框架源码.zip 基于springboot+vue开发前后端分离的开源开发框架源码.zip 基于springboot+vue开发前后端分离的开源开发框架源码.zip 基于springboot+vue开发前后端分离的...

    spring-boot-中文参考手册 SpringBoot中文文档 springboot 中文 文档

    spring-boot-中文参考手册 SpringBoot中文文档 springboot 中文 文档 SpringBoot 帮助您创建可以独立运行的、基于 Spring 的生产级应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您可以从最简单的开始。...

    SpringBoot全套教程_Java微服务架构视频教程

    本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握SpringBoot的快速构建Spring项目的方式,并且还深入剖析SpringBoot内部核心原理,如:自动配置原理,start原理,自定义start等, 让你知其然,知其所以然 ...

    Springboot搭建的公司官网门户系统源码.zip

    Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot搭建的公司官网门户系统源码 Springboot...

    基于SpringBoot + Vue开发的前后端分离的后台管理系统模板,SpringSecurity + JWT权限管理.zip

    毕业设计 基于springboot mysql Vue的系统开发,供参考,提供说明材料+源代码 毕业设计 基于springboot mysql Vue的系统开发,供参考,提供说明材料+源代码 毕业设计 基于springboot mysql Vue的系统开发,供参考,...

    springboot权限控制系统

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    springboot从入门到精通

    SpringBoot是Java开发中的一个热门框架,由Pivotal团队维护,它简化了Spring应用程序的初始设置和配置,使得开发者可以快速地构建可运行的独立应用程序。本资源包"springboot从入门到精通"旨在帮助初学者和进阶者...

    廖师兄2小时学会springboot

    廖师兄2小时学会springboot 第1章 SpringBoot介绍 1-1 SpringBoot介绍和课程安排 1-1 SpringBoot介绍 第2章 第一个SpringBoot应用 快速构建第一个SpringBoot应用 2-1 第一个SpringBoot应用 第3章 项目属性...

Global site tag (gtag.js) - Google Analytics