springboot


1,Spring1.x时代

在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。

2,Spring2.x时代

随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。
那么,问题来了,究竟是应该使用xml还是注解呢?

3,注解还是XML

在spring早期版本中,由于当时的JDK并不支持注解,因此只能使用XML的配置,很快,随着JDK升级到JDK5之后,它加入了注解的新特性,这样注解就被广泛地使用起来, 于是spring内部也分为两派,一派是使用XML的,一派是使用注解的,为了简化开发,在spring2.X之后的版本也引入了注解,不过是少量的注解,如@Component @Service等,但是功能还是不强大,因此对于srping的开发,大部分情况下还是使用XML为主,随着注解的增加,尤其是Servlet3.0之后,WEB容器可以脱离web.xml的部署,使用得WEB容器完全可以基于注解开发,对于spring3和spring4的版本注解功能越来越强大。对于XML的依赖起来越少,到了4.0完全可以脱离XML, 所以在spring中使用注解开发占据了主流地位,近年来。微服务的流行,越来越多的企业要求快速开发,所以spring Boot更加兴旺了。
1、应用的基本配置用xml,比如:数据源、资源文件等;
2、业务开发用注解,比如:Service中注入bean等;

4,Spring3.x到Spring4.x

从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Springboot都推荐使用java配置的方式。
 

5,SpringBoot的优点

1,创建独立的spring应该程序。
2,嵌入的tomcat jetty 或者undertow 不用部署WAR文件。
3,允许通过Maven来根据需要获取starter
4,尽可能的使用自动配置spring
5,提供生产就绪功能,如指标,健康检查和外部配置
6,绝对没有代码生成,对XML没有要求配置
 

1,springboot简介

 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。  
 通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapidapplication development)成为领导者。
 

2,为什么用springboot

  创建独立的 Spring 应用程序
  嵌入的 Tomcat,无需部署 WAR 文件
  简化 Maven 配置
  自动配置 Spring
  提供生产就绪型功能,如指标,健康检查和外部配置
  开箱即用,没有代码生成,也无需 XML 配置。
        与云计算天然集成
 

3,特性理解 

  为基于 Spring 的开发提供更快的入门体验
  开箱即用,没有代码生成,也无需 XML 配置。同时也可以修改默认值来满足特定的需求。
  提供了一些大型项目中常见的非功能特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
  Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。 

4,传统开发模式

所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑。
 

 

 

优点:
①开发简单,集中式管理
②基本不会重复开发
③功能都在本地,没有分布式的管理和调用消耗
缺点:
1、效率低:开发都在同一个项目改代码,相互等待,冲突不断

2、维护难:代码功功能耦合在一起,新人不知道何从下手

3、不灵活:构建时间长,任何小修改都要重构整个项目,耗时

4、稳定性差:一个微小的问题,都可能导致整个应用挂掉

5、扩展性不够:无法满足高并发下的业务需求

  

5,微服务开发

微服务:架构风格(服务微化)
        微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通信机制,可以部署在单个或多个服务器上,微服务也指一种松耦合的,有一定有界上下文的面向服务的架构       
 目的:有效的拆分应用,实现敏捷开发和部署
 

 

 优点

    1,每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求
    2,微服务能够被小团队开发,这个小团队2-5人就可以完成了
    3,微服务是松耦合的,是有功能,有意义的服务,无论在开发阶段或部署阶段都是独立的
    4,微服务可以使用不同的语言开发
    5,微服务能部署在中低端配置的服务器上
    6,很容易和第三方集成
    7,每个服务都有自己的存储能力,单独的库,也可以有统一的库
 
缺点
    1,微服务可以带来过来的操作
    2,可以有双倍的努力 
    4,分布式系统可能复杂难管理
    5,分布跟踪部署难
    6,当服务数量增加时,管理复杂度增加
 

1,环境准备

①JDK1.8
②maven3.x
③spring tools suite4.4
④springboot2.x版本
⑤spring

 

 

pom.xml的配置说明

<?xml version="1.0" encoding="UTF-8"?>
<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 https://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>2.1.0.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.spring</groupId>
	<artifactId>springboot_helloworld</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot_helloworld</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<!--添加对spring web 的依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--添加对spring 测试的依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testng</groupId>
			<artifactId>testng</artifactId>
			<version>7.0.0-beta4</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!--manven插件的配置-->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

  

创建UserController

package com.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by Administrator on 2019-10-21.
 */
@Controller
@RequestMapping("user")
public class UserController {
   //测试
    @RequestMapping("hello")
    @ResponseBody
    public String hellowUser(){
        return "hello world!";
    }
}

  

1,启动流程及注解分析

1,@SpringBootApplication SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动springBoot的应用
 

 

 2,@SpringBootConfiguration 标记在某个类上表示是一个springboot的配置类和@Configuration 一样

 

 

 

 

 

 

 
posted @ 2019-10-21 15:48  小丸子的西瓜梦  阅读(223)  评论(0编辑  收藏  举报