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

Spring Boot微服务架构入门

作者头像
xiangzhihong
发布于 2018-02-05 07:37:41
发布于 2018-02-05 07:37:41
1.3K00
代码可运行
举报
文章被收录于专栏:向治洪向治洪
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring-Boot:Spring Cloud构建微服务架构
概述:   从上一篇博客《Spring-boot:5分钟整合Dubbo构建分布式服务》 过度到Spring Cloud,我们将开始学习如何使用Spring Cloud 来搭建微服务。继续采用上一篇博客
九灵
2018/03/09
2.3K0
Spring-Boot:Spring Cloud构建微服务架构
Spring Boot跟踪微服务日志
如果应用程序在运行过程发生问题,大多数开发人员都难以跟踪日志。这可以通过用于Spring Boot应用程序的Spring Cloud Sleuth和ZipKin服务器来解决。
黑洞代码
2021/09/28
9100
微服务架构之Spring Cloud入门
欢迎访问千羽的编程时光 https://nateshao.gitee.io或者原文获取更多精彩文章!
千羽
2021/01/14
7290
微服务架构之Spring Cloud入门
spring boot 系列之一:spring boot 入门
最近在学习spring boot,感觉确实很好用,开发环境搭建和部署确实省去了很多不必须要的重复劳动。
全栈程序员站长
2022/07/18
3300
spring boot 系列之一:spring boot 入门
初识SpringCloud微服务
注意:此篇文章只是测试时使用,只能连接本地zookeeper,不能连接远程zookeeper,原因是zookeeper依赖不对,应改为:
HUC思梦
2020/09/03
3260
初识SpringCloud微服务
springBoot讲解,jpa使用,微服务架构,什么是RESTful API?
微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。
全栈程序员站长
2022/08/09
4420
springBoot讲解,jpa使用,微服务架构,什么是RESTful API?
SpringCloud 微服务实现方式 原
消费启动服务,注意EnableFeginClients 一定要加basePackages,要不然扫不到单独作为api的jar包里面接口
用户2603479
2018/08/15
4740
Spring Boot入门===Hello World
昨天无意间看到Spring Boot ,今天又了解了一下,试着写一个Hello World! 今天看了半天,最后还是要用Maven最方便!以下:
JQ实验室
2022/02/09
2060
Spring Boot入门===Hello World
springBoot入门简介,使用spring initializer快速创建spring Boot项目
传统“单体”spring缺点:许多应用结合在一起,牵一发而动全身。一个小小的bug修改,或者日益增长的需求变更都需要停止服务重新启动。
全栈程序员站长
2022/08/09
1.5K0
springBoot入门简介,使用spring initializer快速创建spring Boot项目
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
推荐系统的核心在于个性化推荐,而个性化推荐的前提是对用户行为的全面了解。用户的每一次操作(如观看、点赞、转发、评论等)都会影响推荐结果。因此,系统需要具备以下功能:
别惹CC
2025/01/10
2520
JavaEE微框架之Spring Boot
##前言## Spring框架作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多,所以知识量很广。 Spring Boot:一款Spring框架的子框架,也可以叫微框架,是2014年推出的一款使Spring框架开发变得容易的框架。学过Spring框架的都知识,Spring框架难以避免地需要配置不少XMl,而使用Spring Boot框架的话,就可以使用注解开发,极大地简化基于Spring框架的开发。Spring Boot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于Spring MVC的Web应用和REST服务开发。 然后本博客介绍基于IDEA编辑器的Spring Boot项目创建和部署。 ##Spring Boot项目创建##
SmileNicky
2019/01/17
6000
Spring Boot框架基础概览
Spring Boot是所有基于Spring开发的项目的起点,Spring Boot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件,它采用了"习惯优于配置"的理念,就像Maven整合了所有的JAR包一样,Spring boot整合了所有框架
Al1ex
2022/09/07
5640
Spring Boot框架基础概览
SpringCloud入门系列之微服务之间的通信
Ribbon作为消费者微服务一端,也会向注册中心进行注册,注册中心Eureka service会向消费者Ribbon提供当前注册的所有节点数据(url、端口)信息。然后根据轮循(默认)策略请求服务提供者。
AI码真香
2022/09/13
8390
Spring Boot构建RESTful Web服务
Spring Boot为为企业应用程序构建RESTful Web服务提供了非常好的支持。本章将详细介绍如何使用Spring Boot构建RESTful Web服务。
黑洞代码
2021/08/05
9140
利用springcloud搭建微服务集成中心
整体目录结构 这里整个功能是一个maven项目,注册中心与功能服务都是maven项目里面的模块。
用户5166330
2019/04/16
4410
利用springcloud搭建微服务集成中心
Spring Boot笔记1
Spring是Java企业版(Java Enterprise Edition,javeEE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。
楠羽
2023/12/29
1970
Spring Boot笔记1
如何使用Java Spring Boot 创建一个微服务项目 一?
微服务现在更流行。它们可以用任何语言编写。在这篇文章中,让我们看看Spring Boot微服务。在本文中,我们看到一个基础项目currency-exchange-sample-service,它具有业务逻辑,并且可以在另一个项目 currency-conversion-sample-service 中调用
用户1418987
2023/10/26
3250
如何使用Java Spring Boot 创建一个微服务项目 一?
SpringCloud的入门学习之概念理解、Eureka入门
  答:微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题、提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面的一个个微服务工程/或者Module模块。
别先生
2019/11/26
4390
Spring Boot Tomcat
传统的部署方式是使Spring Boot应用程序@SpringBootApplication类扩展SpringBootServletInitializer类。SpringBootServletInitializer类文件允许在使用Servlet容器启动时配置应用程序。
黑洞代码
2021/07/14
6280
Spring Boot Tomcat
如何使用Java Spring Boot 创建一个微服务项目 二?
上一篇我们已经链接了 如何使用Java Spring Boot 创建一个微服务项目 一?这一篇我们接着实现第二部分
用户1418987
2023/10/26
2080
如何使用Java Spring Boot 创建一个微服务项目 二?
相关推荐
Spring-Boot:Spring Cloud构建微服务架构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验