前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot微服务架构入门

Spring Boot微服务架构入门

作者头像
xiangzhihong
发布于 2018-02-05 07:37:41
发布于 2018-02-05 07:37:41
1.3K10
代码可运行
举报
文章被收录于专栏:向治洪向治洪
运行总次数:0
代码可运行

概述

还记得在10年毕业实习的时候,当时后台三大框架为主流的后台开发框架成软件行业的标杆,当时对于软件的认识也就是照猫画虎,对于为什么会有这么样的写法,以及这种框架的优势或劣势,是不清楚的,Spring中的AOP(面向切面编程)机制在软件开发中是很好的应用。一方面使开发业务逻辑更清晰、专业分工更加容易进行。另一方面就是应用Spirng  AOP隔离降低了程序的耦合性使我们可以在不同的应用中将各个切面结合起来使用大大提高了代码重用度。在后来一年的工作中,也确实感觉到采用Spring给我们开发和管理代理的好处,而对于这种软件思想深层次的理解还是停留在应用上。

企业微服务

谈及微服务,作为当前主流的企业框架Spring,它提供了一整套相关的顶级项目,能让开发者快速的上手实现自己的应用,今天就介绍下Spring旗下各个顶级项目:

Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了。

Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。

Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。

Spring Cloud:微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。

Spring XD:是一种运行时环境(服务器软件,非开发框架),组合spring技术,如spring batch、spring boot、spring data,采集大数据并处理。

Spring Data:是一个数据访问及操作的工具包,封装了很多种数据及数据库的访问相关技术,包括:jdbc、RedisMongoDB、Neo4j等。

Spring Batch:批处理框架,或说是批量任务执行管理器,功能包括任务调度、日志记录/跟踪等。

Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

Spring Integration:面向企业应用集成(EAI/ESB)的编程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。

Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。

Spring AMQP:消息队列操作的工具包,主要是封装了RabbitMQ的操作。

Spring HATEOAS:是一个用于支持实现超文本驱动的 REST Web 服务的开发库。

Spring Mobile:是Spring MVC的扩展,用来简化手机上的Web应用开发。

Spring for Android:是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,提供RestTemplate来访问Rest服务。

Spring Web Flow:目标是成为管理Web应用页面流程的最佳方案,将页面跳转流程单独管理,并可配置。

Spring LDAP:是一个用于操作LDAP的Java工具包,基于Spring的JdbcTemplate模式,简化LDAP访问。

Spring Session:session管理的开发工具包,让你可以把session保存到redis等,进行集群化session管理。

Spring Web Services:是基于Spring的Web服务框架,提供SOAP服务开发,允许通过多种方式创建Web服务。

Spring Shell:提供交互式的Shell可让你使用简单的基于Spring的编程模型来开发命令,比如Spring Roo命令。

Spring Roo:是一种Spring开发的辅助工具,使用命令行操作来生成自动化项目,操作非常类似于Rails。

Spring Scala:为Scala语言编程提供的spring框架的封装(新的编程语言,Java平台的Scala于2003年底/2004年初发布)。

Spring BlazeDS Integration:一个开发RIA工具包,可以集成Adobe Flex、BlazeDS、Spring以及Java技术创建RIA。

Spring Loaded:用于实现java程序和web应用的热部署的开源工具。

Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。

Spring Boot入门(环境搭建)

前几天同事买了一本《Spring Boot》实战的书,看了一下,对于我们这种有入门知识,对于原理上不是很清楚的还是不错的,这里先写一篇博客,主要是实现一个简单的例子。

软件环境

  1. MyEclipse Enterprise Workbench(Version: 2015 CI) 
  2. JDK1.7 
  3. apache-tomcat-8.0.32

Maven 项目创建

1,创建一个maven项目

工程创建完成后如下图

pom.xml文件配置(详见:点击打开链接

详细的pom.xml文件如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>

<artifactId>TestWebApp</artifactId>
<packaging>jar</packaging>

<name>TestWebApp</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

 

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<!-- Package as an executable JAR -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

编写测试类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package opensoruce.com.test.spring.boot;
importjava.io.Serializable;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 
public class Person{
	
	private String name;
	private int old;

	public Person(String name, int old) {
		super();
		this.name = name;
		this.old = old;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getOld() {
		return old;
	}
	public void setOld(int old) {
		this.old = old;
	}
}

控制器(conntroller類)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package opensoruce.com.test.spring.boot;
import java.io.UnsupportedEncodingException;  
import org.springframework.boot.SpringApplication;   
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;  
import org.springframework.web.bind.annotation.PathVariable;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;   
@RestController  
@RequestMapping("/person")
public class PerController  {   
 @RequestMapping("/{old}/{name}")   
public Person view(@PathVariable("old") int old,@PathVariable("name") String name) 
 {        
	name =changeChinseToChar(name);//解决参数值为中文的时候,乱码问题      
}
        Person person = new Person();    
       person.setName(name);      
   person.setOld(old);  
        return person;     
  }       
 private String changeChinseToChar(String value)  { 
	  String temp ="";  
	 byte bb[];    
	  try{  
		  bb = value.getBytes("ISO-8859-1");
	    temp= new String(bb, "UTF-8");     
	   } catch (UnsupportedEncodingException e)  {     
		 e.printStackTrace();  
		 }     
     return temp; 
 } 

注册

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package opensoruce.com.test.spring.boot;  
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.web.bind.annotation.RestController;  
@RestController @ComponentScan 
@EnableAutoConfiguration 
public class App  { 
    public static void main( String[] args ) { 
         SpringApplication.run(App.class, args); 
    } } 

配置完后,更新项目

运行,测试程序

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-11-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
我以为10呢
我以为10呢
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
玩玩NAS、软路由,搭建家庭影音系统
我平时爱看一些高清电影,4k、HDR之类的,还有很多国内视频软件没有的电影。我媳妇也喜欢看剧,平时做饭的时候,都会用平板播放电视剧。所以我家对影音这块是有需求的。
Yuyy
2023/03/08
5.8K0
玩玩NAS、软路由,搭建家庭影音系统
《畅玩NAS》家庭 NAS 服务器搭建方案「建议收藏」
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。目前国际著名的NAS企业有Netapp、EMC、OUO等。说白话,就是家用的服务器。
全栈程序员站长
2022/06/28
26.3K0
《畅玩NAS》家庭 NAS 服务器搭建方案「建议收藏」
宅男福利,如何搭建属于自己的家庭影院系统
作为一个程序员,一个宅男程序员,如何在家里愉悦地观看电影,愉悦地欣赏影视剧集是每个人的梦想。
程序那些事儿
2023/03/07
2.4K0
宅男福利,如何搭建属于自己的家庭影院系统
一文扫尽Nas常用Docker软件
NAS(Network Attached Storage,网络附加存储)设备上的Docker软件选择取决于您的具体需求和用途。以下是一些NAS上常用的Docker软件推荐:
你可以叫我可乐
2024/05/23
1.9K0
一文扫尽Nas常用Docker软件
NAS工具软件大盘点:瞧瞧哪个被你遗漏了
很多人都听说过NAS,也有很多人正在使用NAS,而NAS用户通常需要安装一些软件来扩展其功能,毕竟NAS的功能实在是太多了,光是部署与调试就要耗费大量的时间,
你可以叫我可乐
2024/08/01
9260
NAS工具软件大盘点:瞧瞧哪个被你遗漏了
NAS必备软件清单:提升存储效率与媒体管理
NAS(Network Attached Storage)用户通常需要安装一些软件来扩展其功能,以下软件支持各种系统,无论是群晖、威联通还是其他NAS设备,新手或者技术牛人都值得尝试。
你可以叫我可乐
2024/05/21
1K0
NAS必备软件清单:提升存储效率与媒体管理
OpenWrt应用场景:IPTV融合介绍
所谓iptv融合,就是将iptv和互联网融入到一起,实现任何设备(手机、电视、平板)在任何地点都能够观看家里运营商提供的iptv。
用户1160092
2024/11/12
1.9K0
OpenWrt应用场景:IPTV融合介绍
高性能视频播放器:Infuse for Mac中文版
Infuse Pro 是一款专为Mac设计的,能够轻松播放高质量视频播放器,可以利用 iCloud 多平台同步元数据、播放记录,而开发的软件实用程序。它提供了一个直观的用户界面和一个整洁干净的界面,支持所有流行的视频格式,如 MKV、MP4、AVI、ISO、DVD、BDMV 等。可以在一个中央库中同时显示来自多个来源的视频。让您浏览和播放存储在 Mac 上的视频。
快乐的小丸子
2022/11/18
1.3K0
Infuse for Mac(强大的视频播放器)7.4.7中文免激活版
Infuse PRO for Mac 是一款强大的视频播放器,几乎支持您的所有视频文件。Infuse 将把您从永无宁日的视频转换中解放出来,用极美的方式在您的Mac上观赏几乎所有视频格式。
一小朵
2022/11/03
1.4K0
Infuse for Mac(强大的视频播放器)7.4.7中文免激活版
Infuse Pro 7.5 Mac超强全能视频播放器 中文版
Infuse Pro 是一款强大的 Mac 视频播放器。它可以一口通吃您所有的视频文件 - Infuse 将把您从繁琐的视频转换中解放出来,用极美的方式在您的 Mac 上观赏几乎所有视频的格式。Infuse 已适配 macOS 11 并添加更加强大的在线视频,Trakt 同步,AirPlay 以及字幕功能。一切尽在随手掌控中。
用户1517359
2023/03/27
9560
《树莓派4B家庭服务器搭建指南》第十七期:树莓派配合性能更好的闲置笔记本搭建私人影院
Jellyfin是一款开源免费的私人影院(影音媒体管理)系统,可以帮我们把硬盘里的影视资源管理起来,并添加精美的海报.
zhaoolee
2023/07/11
1.5K0
《树莓派4B家庭服务器搭建指南》第十七期:树莓派配合性能更好的闲置笔记本搭建私人影院
【远程工具系列】节点小宝、RustDesk、向日葵、ToDesk、TeamViewer、AnyDesk ——六款主流远程控制软件横向测评对比
无论你是 DevOps 运维工程师、自由开发者,还是需要远程办公、远程剪辑乃至远程教学的普通用户,一款兼顾 “远程桌面 + 文件传输 + 内网穿透 + 异地组网” 的工具都能让效率几何级跃升。
猫头虎
2025/05/22
6940
【远程工具系列】节点小宝、RustDesk、向日葵、ToDesk、TeamViewer、AnyDesk ——六款主流远程控制软件横向测评对比
Plex Media Server本地搭建私人影音网站并实现远程访问
用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各种碎片时间(追剧下饭、地铁上刷剧等等),看个喜欢的视频必不可少。但不知道为什么,各大影音平台总能轮流占住热播剧,还限定很多剧只能会员观看,搞得我们总有交不完的会员费。此时,拥有一个私人影音媒体站点就显得很有必要。今天,笔者就为大家介绍,如何使用cpolar+Plex组合,在Windows系统上搭建一个全能的私人媒体影音站点。
是Nero哦
2024/01/18
5.2K0
Plex Media Server本地搭建私人影音网站并实现远程访问
一站式国产远程工具推荐:全面解析、深度对比与最佳选型指南
节点小宝集“内网穿透、异地组网、P2P 高速传输、深度 NAS 集成、端到端加密、安全审计”于一身,以行业领先的性能与体验,助力家庭智能化、企业数字化和开发者高效运维。
猫头虎
2025/06/01
2040
一站式国产远程工具推荐:全面解析、深度对比与最佳选型指南
小米路由器R2D开启SSH+Frp内网穿透,让爸妈在老家轻松追剧
家里小米电视就可以在路由器下的局域网里,播放下载好的电视剧和电影,让爸妈在家轻松追剧
yuanfan2012
2023/06/23
5.7K0
小米路由器R2D开启SSH+Frp内网穿透,让爸妈在老家轻松追剧
基于Emby搭建个人媒体库
Emby是一个媒体服务器软件,用于组织、管理和共享个人的音乐、电影、电视节目和其他媒体文件。它可以将您的媒体库中的内容流式传输到各种设备上,例如电脑、智能手机、平板电脑、智能电视等。
叔牙
2023/09/25
11.1K0
基于Emby搭建个人媒体库
简易家庭网络储存环境搭建
通常,我们会使用电脑上的本地硬盘和在线网盘来储存文件,然而本地硬盘有时候会出现容量太小的情况,而网盘则受限于网速,无法快速传输文件。并且,局域网内不同设备间的文件传输也成为了一大难题,这个时候,网络附加储存,也被称为NAS,显现出了它的优点。由于这类专业设备相对于移动硬盘、U盘等价格较贵,所以本文仅介绍如何以较低成本搭建简易家庭网络储存环境。
蒟蒻
2023/11/16
5821
简易家庭网络储存环境搭建
如何打造一个私人影音媒体库
你是否厌倦了视频软件中各种视频广告,你是否想要4K画质的观看体验,今天我们来打造一个低成本的私人影音库。
Lvshen
2022/05/05
2.4K0
如何打造一个私人影音媒体库
Infuse for Mac(强大的mac视频播放器)
Infuse for Mac是一款强大的mac视频播放器,可以在iPhone、iPad、Apple TV 和 Mac 上观看几乎任何视频格式的美妙方式。无需转换文件!Infuse 针对 macOS 11 进行了优化,具有强大的流媒体选项、Trakt 同步以及无与伦比的 AirPlay 和字幕支持。华丽的界面。精确控制。和如丝般流畅的播放。
Mac软件分享
2022/08/09
1.4K0
Infuse for Mac(强大的mac视频播放器)
借助树莓派上演“窃听风云”
但最近科技发展飞速,一般家庭宽带的网速已经达到了100M,同时手机的4G已经普及,5G也开始商用了(加油华为,加油China),在这样的环境下实现电影里面的窃听技术就比较容易得多了。
FB客服
2019/07/22
1.5K0
借助树莓派上演“窃听风云”
推荐阅读
相关推荐
玩玩NAS、软路由,搭建家庭影音系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验