Springboot第一站: java开发框架与微服务
把SSM进行整合,完成了很多自动的工作,不需要去做繁琐的配置整合工作。简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;优点快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌Tomcat(启动类启动后端口号是8080)Starters自动依赖和版本控制(修理工,既可以修空调,又可以修电视
1.Springboot入门
1.1 Springboot简介(脚手架)
把SSM进行整合,完成了很多自动的工作,不需要去做繁琐的配置整合工作。
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;
优点:
- 快速创建独立运行的spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成war包,内嵌Tomcat(启动类启动后端口号是8080)
- Starters自动依赖和版本控制(修理工,既可以修空调,又可以修电视、洗衣机,修不同设备螺丝刀用的不同,如果一个一个做,一个一个准备。starters就相当于一个工具箱,这个工具箱里包含了任何需要的。对于某一个依赖,打一个包,starters相当于一个集成化的工具)
- 大量的自动装配,简化开发,也可以修改默认值
- 无需配置XML无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
1.2 微服务
Spring Cloud微服务治理方案
2014,martin fowler(在 2014 年,Martin Fowler 对微服务进行了深入的解释和阐述,为理解 Spring Cloud 微服务治理方案提供了重要的理论基础。)
java开发框架发展历程:
Servlet,ssh(只不过ssh不用了,指Struts、Spring、Hibernate),ssm,单体(所有的业务场景没有区分,可以简单理解为Springboot),SOA(Dubbo面向服务的开发和ZooKeeper),springCloud(启动类还是通过Springboot,只是一个管理)
ssh框架:
SSH是 struts+spring+hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架。SSH不是一个框架,而是把多个框架(Struts、Spring以及Hibernate)紧密的结合在一起,用于构建灵活、易于扩展的多层Web应用程序。
其中SSH框架的系统从职能上分大致可以分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。
由SSH构建系统的基本业务流程是:
1、在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。
2、在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
3、在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

从最开始的Servlet项目,实现一个小功能就是一个Servlet。
后来有了框架,ssh。
ssm,ssh,servlet都属于单体架构。

前台出错不影响后台。但是还不是很好。

Dubbo和ZooKeeper。发送一个请求给前端页面,前端页面去调用这个服务,比如前台页面系统、个人中心系统、后台管理系统都有登录服务,那么就调用这一个就够了。

和SOA架构很像,只不过是通过SpringCloud微服务,分成更小的服务去管理。
什么是微服务?
微服务:架构风格(服务微化)
微服务是指开发单个小型的但有业务功能的服务,每个服务都有自己处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种种松耦合的有一定的有界上下文的面向服务架构。
推送广告的有一个推送广告的服务,
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
单体应用:ALL IN ONE
微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;
微服务文档Microservices

微服务优点:
每一个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
微服务是松耦合的,是有功能意义的服务,无论是开发阶段或是部署阶段都是独立的。 耦合度低,任何一个服务能够进行调用。
微服务能够使用不同的语言开发。java、python
微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,一个团队的新成员能够更快投入生产。
微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果,
微服务能够即时被要求扩展。
微服务能够部署中低端配置的服务。
易于和第三方集成。哪里需要哪里搬
每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。
微服务缺点:
微服务架构可能带来过多的操作
可能双倍的努力
分布式系统可能复杂难以管理, 上千个服务就难以管理,
因为分布部署跟踪问题难 服务之间也是能够调用的
当服务量增加,管理复杂性增加
1.3 环境准备
环境约束
–jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"
–maven3.x:maven 3.3以上版本;Apache Maven 3.3.9
–IntelliJIDEA2017:IntelliJ IDEA 2017.3.3 x64、STS
–SpringBoot 2.0.2.RELEASE:统一环境; spring5
不要求版本 单一springboot项目 版本冲突
SpringCloud微服务治理的时候 Springboot的版本是由选择的SpringCloud的版本决定的。
1.3.1 Maven设置
给maven 的settings.xml配置文件的profiles标签添加
<profile>
<id>jdk‐1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
1.3.2 IDEA设置


1.3.3 Spring Boot项目 HelloWorld
(maven项目改变成springboot项目)
浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;
1. 创建一个maven工程;(jar)
2. 导入spring boot相关的依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
starter的版本由父工程决定,工具箱的版本里面对应扳手和螺丝刀应该也有版本。
application.properties:
server.port=8080
3. 编写一个主程序;启动Spring Boot应用
package com.qcby.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
注意!!
要把主程序放在与com.qcby平齐的位置,因为这个主程序会扫描他所在的包和他所在的子包 。如果放在与其他实体类等平齐位置且不在一个包下,会扫描不到。
4.编写相关的Controller、Service
package com.qcby.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello world!";
}
}
5.运行主程序测试

6.简化部署
把springboot打包成可执行jar包形式,如果不需要jar包,就不需要这个插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
将这个应用打成jar包,直接使用java -jar的命令进行执行;

加了这个插件,才能build SUCCESS

![]()
在项目目录下打开终端,输入java -jar 项目名

就可以跑起来,跟在IDEA启动这个项目是一回事。然后就可以去访问了。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)