SpringBoot简介及入门案例(使用STS工具)

1 Spring Boot简介

1.1 SpringBoot概述

现在软件市场已经形成一定的规模,系统架构的夫再度也越来越高(例如有单体架构,分布式架构,微服务架构)。软件的整体架构体系正在发生很大的变化,在这种变化中,企业现在更注重技术的开箱即用,更注重技术在生态圈中的深度融合,更注重轻量级的运维,由此SpringBoot诞生。

1.2 SpringBoot核心特性

SpringBoot是一个脚手架,构建Spring框架(FrameWork)基础之上,基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性(创建完一个基本项目以后,可零配置或少量配置即可运行我们的项目),其主要核心有如下几个方面:

  • 起步依赖(Starter Dependency)-项目创建时底层帮你关联依赖。
  • 自动配置(Auto Configuration)。
  • 健康检查(Actator)-监控。
    其中SpringBoot官方地址为https://spring.io/projects/spring-boot

2 Spring Boot环境配置

2.1 准备工作

工具下载
1)下载JDK1.8,并进行环境变量配置(假如已有则无需再次下载和配置)。
2)下载最新maven(例如apache-maven-3.6.3,网址http://maven.apache.org)并解压。
3)下载sts最新版(例如sts-4.4.5.RELEASE,网址https://spring.io/tools)并解压(新版本下载下来时一个.jar文件,需要在jar文件所在的目录中,以命令行方式执行java -jar 下载的文件名的方式进行解压,如下图所示(需要首先启动系统自带的命令行客户端,然后切换到软件所在目录,cd指令为切换目录的意思)。
在这里插入图片描述
工作区准备:定义新的工作区(要求没有中文目录),例如d:/TCGBIII/WORKSPACE。
建议:将下载的所有文件存储到同一目录并解压,例如d:/TCGBIII/TOOLS目录。要求目录不要有中文,也不要有特殊符号(例如&等)。

2.2 Maven基本配置

打开Maven中的setting.xml文件,并对其如下选项进行配置。

  • 配置maven本地库(从maven远程服务器下载的资源存储到的位置)
<!-- 本地仓库路径 -->
<localRepository>e:/java/javaDevelop/localRepo</localRepository>
  • 配置maven私服(配置到mirrors标签内部)。
<mirror>
	  		<id>aliyun</id>
	 		<name>aliyun Maven</name>
	 		<mirrorOf>*</mirrorOf>
	 		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
  • 配置maven中的profile(配置到profiles标签内部),设置JDK编译和运行版本。
<!-- 配置JDK版本 -->
   	<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>

2.3 STS整合Maven配置

  • 启动STS工具(特殊的Eclipse,添加了Spring开发插件)
    在这里插入图片描述
  • Maven Installations配置
    在这里插入图片描述
  • Maven User Settings配置
    在这里插入图片描述

3 Spring Boot 快速入门

3.1 项目创建及结构分析

打开STS 集成开发工具,创建spring boot项目,其具体步骤如下:
第一步:打开项目新建窗口(快捷键ctrl+n), 搜索spring,选择spring starter 项目。
在这里插入图片描述
第二步:填写项目基本信息。
在这里插入图片描述
第三步:选择Spring Boot版本。
在这里插入图片描述
点击finish之后,项目便开始从maven配置中指定的私服服务器(例如阿里云的maven服务器)去下载起步依赖(SpringBoot项目中默认指定了项目启动时需要的一些jar包依赖),这个过程可能会比较耗时(网络最好不要用手机网络,会导致很多资源下载不下来),假如指定版本的springboot项目以前创建过,它会默认先从本地库查找,假如本地库没有,则从远程库去下载。
项目创建成功以后,其包视图(Package Explorer)结构。
在这里插入图片描述
其中,在上图呈现的CGB-SBOOT-01项目结构中,所有的类和配置文件都是创建好项目以后,由STS工具帮我们自动创建的。(假如你是普通的maven项目,这些类还有配置文件需要我们自己手动创建)

3.2 项目启动过程分析

找到项目的入口类(使用了@SpringBootApplication注解描述),然后运行启动类,检测启动过程,SpringBoot在启动时,控制台会出现如下图的标识:
在这里插入图片描述
项目启动时发生了什么呢?我在这里画了张图帮大家进行一下分析,如下图所示:
在这里插入图片描述
SpringBoot 项目在启动时,首先基于启动入口类上的注解描述,进行自动配置并扫描指定包以及子包中的类进行加载,然后检测类上是否有Spring框架中指定的注解描述(例如@Component,@Controller,@Service等)。假如有,则将类交给Spring框架中的BeanFactory工厂接口的实现类对象,此工厂对象会基于反射创建Bean的实例,假如此Bean指定了生命周期方法,还会调用生命周期方法。当实例创建以后,Spring框架还会基于类的作用域描述,将实例存储到不同作用域的容器中。以实现Bean对象的科学应用。

3.3 项目业务初步实现及测试

业务实现:
基于SpringBoot脚手架(或者架子工),通过Spring框架进行Bean对象的管理实现。

第一步:创建一个DefaultCache类,存储到src/main/java目录,然后交给spring管理。

package com.cy.pj.common.cache;
@Component	
public class DefaultCache {}

其中,@Component是Spring中用于描述Bean类的一个注解。用于告诉Spring这个类的实例由Spring创建,当此对象由Spring创建和管理时,默认会将对象存储到池(Bean池)中。

第二步:添加sringboot 测试类,进行bean的获取及测试,要放在src/test/java目录中:

package com.cy.pj.common.cache;
@SpringBootTest
public class DefaultCacheTests {
	@Autowired
	private DefaultCache defaultCache;
	@Test
	public void testCache() {
		System.out.println(defaultCache);
	}
}

其中:
@SpringBootTest 注解用于告诉spring框架,此测试类交给spring管理。
@Autowired注解描述属性时,用于告诉spring框架要为此属性注入一个值?(至于注入规则,后面课程慢慢加强)
第三步:代码设计及运行分析,如下图所示:
在这里插入图片描述
在上图中描述了DefaultCacheTests类与DefaultCache类的关系,这两个类通过指定注解(@SpringBootTest,@Component)进行了描述,其意图是告诉spring框架这个两个类的实例的创建由Spring负责,并且由Spring框架基于@Autowired注解的描述完成DefaultCacheTests实例中有关DefaultCache类型的值的注入(DI)。

第四步:为对象设计作用域,设置延迟加载,设置生命周期方法(了解)。
在Spring框架中,Spring为由它创建和管理的对象,设计了一些特性,例如作用域,延迟加载,生命周期方法等,基于这些特性实现对Bean对象的管理。

package com.cy.pj.common.pool;
@Component
	
@Scope("singleton")
@Lazy
	
public class ObjectPool {
	public ObjectPool() {
	   System.out.println("ObjectPool()");
	}
	@PostConstruct
	public void init() {
		System.out.println("init()");
	}
	@PreDestroy
	public void destory() {
		System.out.println("destory");
	}
}

其中:
@Scope 是Spring中用于定义Bean对象作用域的一个注解,其常用的值有
singleton(整个内存有一份Bean实例,此实例何时创建与类的延迟加载特性配置有关,此实例创建以后,生命周期会由spring框架管理),prototype(每次获取都会创建新实例,此实例会在需要时创建与lazy特性无关,这个实例创建以后,不会交给spring管理,spring可以对其初始化,但不负责销毁。)等。
@Lazy注解用于描述类,其目的是告诉spring框架此类支持延迟加载,通常会配合单例作用域使用。
@PostConstruct 注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法之后执行。
@PreDestroy 注解用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行(当作用域为prototype时,此方法不会执行)。

第五步:通过测试类测试作用域,延迟加载,生命周期方法。

package com.cy.pj.common.cache;
@SpringBootTest
public class ObjectPoolTests {
	@Autowired
	private ObjectPool objectPool;
	@Test
	public void testObjectPool() {
		//???
	}
}

Spring 是一个资源整合框架(Framework),通过spring可将很多资源(自己写的对象或第三方提供的对象,例如连接池等)整合在一起,然后进行科学应用,以便更好的对外提供服务。如下图所示:
在这里插入图片描述
在上图中,Spring框架可以为由它管理的对象(Bean)提供懒加载策略(对象暂时用不到,则无需加载和实例化),作用域(例如singleton-频繁用时可以考虑内存中只有一份,prototype-使用次数少时可以用时创建,不用时销毁),生命周期方法(更好实现对象的初始化和资源销毁),以实现对象对系统资源的有效使用。同时Spring框架还可以基于用户设计管理对象与对象的依赖关系,以降低对象与对象之间的直接耦合,提高程序的可维护性和可扩展性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值