SpringCloud微服务系列笔记(1)-SpringBoot简单入门

一、Spring Boot简介

引用官方的一段介绍

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applicationsneed very little Spring configuration.”

说白了,就是一个可以用很简单的方式和很少量的配置创建一个生产级别应用的东西,相信各位都用过spring系列框架,比如Spring,SpringMVC等,在搭建一个常规的WEB应用时,一方面得考虑maven中各个组件的版本,另外一方面又需要做大量的配置,比如配置各种Bean等,但很多时候这些配置都是很冗余、很模板化的东西,基于这种情况spring boot横空出世,它的理念是“约定优于配置”,所谓约定优于配置,就是很多模板配置它都帮你配好了,就像我们提前约定好了,你无需再配置,在没有特殊需求的情况下,用它的自动配置,要优于你自己去配置。在下面我就不赘述Spring Boot,简单讲解一下使用。(PS:在学习SpringBoot之前,需要一定的Spring基础,因为SpringBoot本质上还是Spring,若不先学习Spring及SpringMVC,后期遇到问题会不知所措)。


二、Spring Boot与Spring Cloud的关系

Spring Boot的特点是配置简单,开发迅速,从本文的第三章中也可以体现出来,搭建一个Web服务仅需数行代码,甚至一行配置都不需要,这不就正好符合微服务架构中的“微”吗?微服务架构的核心思想就是将一整个大的系统拆分为多个微小的服务,注意,这里多个微小的服务并不是简单的拆分为多个项目,然后通过引入各自的Jar包来集成一个大系统,而是拆分为多个可各自进行迭代、部署的服务,从而实现最大程度的解耦。在这样的架构下,一个微服务的粒度势必不会太粗,可能它仅仅只是实现对某个表的增删查改,但如果还要做大量的配置,不就会增加开发难度?假如一个系统由成百上千个微服务组成,难道服务都要去创建和维护一套相似的配置?当然,使用Spring Boot的好处还有许多,这里就不一一阐述,大家可以在后期的使用中慢慢体会。

另外,Spring Cloud的各个组件并不是Spring全部从头实现出来的,而是将多家公司的框架组件,比如Netflix的Eureka框架等,封装成Spring Boot应用,并通过自动配置简化了手动配置,对于开发者来说,基本上Spring Boot的配置套路都可以套用到Spring Cloud的各个组件,从而无需花费时间学习各个框架的配置方法。


三、Spring Boot之HelloWorld

3.1 项目说明

这个是最简单的入门demo项目,零配置,数行代码即可搭建一个web项目,并且该项目内嵌Tomcat,无需部署即可像普通java应用一样直接运行。

3.2 创建项目

使用IDE的“Spring Starter Project”功能即可快速进行创建。点击菜单的New,选择“Spring Starter Project”,再点击下一步,如下图
Spring Starter Project
点击Next,选择需要添加的组件,在这里我们只是简单的演示一个web应用,所以选择“Web”即可,如下图:
添加组件
点击Finsh,稍等片刻,可以看到已经创建好一个应用,并生成了一个Main类,如下图:
Main类

3.3 编写代码

我们简单编写一个Hello控制器,功能很简单,访问该控制器时返回一个map对象序列化后的JSON字符串。代码如下:

package com.czh.demo;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//RestController注解表明该控制器是一个Rest风格控制器,方法返回的对象会序列化成JSON
@RestController
public class HelloController {
   

    //GetMapping注解表明该方法只处理来自路径为"/hello"的GET请求
    @GetMapping("/hello")
    public Map helloWorld() {
        Map hello = new HashMap();
        hello.put("SpringBoot", "HelloWorld");
        return hello;
    }
}

3.4 运行项目

由于SpringBoot默认内嵌了一个Tomcat容器,所以只要右键Run Java Application运行main方法即可。
运行项目
通过控制台我们可以看到,此时内嵌的Tomcat已经启动并监听了8080端口,我们在浏览器输入此地址试试。
web界面
由此,我们最基本的HelloWorld运行成功。


四、Spring Boot之增删查改

4.1 需求分析

目前的需求是需要一个简单的通讯录登记系统进行信息登记,登记的信息包括姓名、出生日期、电话、微信号。目前需要新增、修改、删除和查询联系,其中查询联系人是通过姓名进行查询,登记联系人名字不能重复。另外这个项目需要开发速度快、部署简单、性能强大。

4.2 技术选型

下面来设计一个稍复杂的Spring Boot项目-通讯录项目,存储的信息包括姓名、出生日期、联系电话、微信号。这个项目技术选型如下:

  • 使用Spring Data JPA作为持久层框架
  • 使用Tomcat Jdbc作为数据库连接池
  • 使用Mysql作为数据库
  • 使用Slf4j、Logback作为日志记录组件
  • 使用Spring Aop记录全局请求日志
  • 使用SimpleCache缓存提升性能
  • 使用Ajax与后台交互,实现简单的增删查改

4.3 数据库设计

这个表结构很简单,按需要存储的字段设计即可。

CREATE TABLE `contacts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL COMMENT '姓名',
  `birthday` date NOT NULL COMMENT '生日',
  `phone` varchar(255) NOT NULL COMMENT '联系电话',
  `wechat` varchar(255) NOT NULL COMMENT '微信号',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.4 创建项目

由于我们用到JPA及MySQL,所以新建项目时需要引入相应的组件,而Spring Boot由于内嵌了Tomcat,故无需再引入Tomcat jdbc。如下图:
创建项目

4.5 编写代码

下面我们进入编码阶段,整个架构就是常规的MVC。

4.5.1 编写实体层

创建一个与通讯录表(contacts)对应的实体类(Contact),需要注意的是默认数据库表名是实体名一致,若不一致,需要加上@Table注解,还有其它注解具体看注释。

package com.czh.contacts.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.validator.constraints.NotBlank;
import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 
 * @author caizh
 *
 * 通讯录表对应的实体类
 */
@Entity
@Table(name="contacts")
public class Contact {
   

    /**
     * 主键
     */
    //表明该字段对应数据库的主键字段
    @Id
    //表明该字段为自增长字段
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值