Spring Boot 入门

目录

 

1.引言

1.1Spring 传统项目分析

1.2Spring 家族技术发展

1.3Spring Boot 概述

1.4Spring Boot 核心特性

2.1初始环境配置

2.1.1 准备工作

2.1.2 Maven基本配置

2.1.3 STS整合maven配置

2.1.4 STS工具使用基本优化

2.2项目创建及结构分析

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

2.4 项目业务增强实现及测试


1.引言

1.1Spring 传统项目分析

在传统的spring应用项目中:

  • 配置相对复杂(大量的xml)
  • 依赖冲突严重(maven依赖版本不同)
  • 扩展相对复杂
  • 思考: 如何让初级程序员从复杂的配置中解脱出来,把更多的精力用于实现业务上呢?

Spring诞生于2002年,成型于2003,目前已经发展到了Spring5.x版本,支持JDK-11及JavaEE8。现在的spring已经不仅仅是framework,还扩展了spring boot,spring cloud等。

说明:学技术一定要了解技术发展史,并对技术的发展有一定的前瞻性。

1.2Spring 家族技术发展

Spring诞生于2002年,成型于2003,目前已经发展到了Spring5.x版本,支持JDK-11及JavaEE8。现在的spring已经不仅仅是framework,还扩展了spring boot,spring cloud等。

说明:学技术一定要了解技术发展史,并对技术的发展有一定的前瞻性。

 

1.3Spring Boot 概述

现在软件市场已经形成一定的规模,系统从单体架构,分布式架构,再到微服务架构,其整个架构体系正在发生很大变化,企业现在更注重技术的开箱即用,更注重技术在生态圈中的深度融合,更注重轻量级的运维。由此spring boot诞生。

 

1.4Spring Boot 核心特性

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

  • 起步依赖(Starter Dependency)。
  • 自动配置(Auto Configuration)。
  • 健康检查(Actator)-监控。

其中,Spring Boot官方地址为https://spring.io/projects/spring-boot


2.Spring Boot 快速入门

2.1初始环境配置

2.1.1 准备工作

  • 工具下载
  1. 下载JDK1.8,并进行环境变量配置。
  2. 下载maven(例如apache-maven-3.6.3,网址http://maven.apache.org/),并进行相关配置(本地库,私服)。
  3. 下载sts最新版(例如sts-4.4.2.RELEASE,网址https://spring.io/tools)。
  • 工作区准备
  1. 定义新的工作区(要求没有中文目录),例如d:/workspacests。

 

2.1.2 Maven基本配置

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

  • 配置maven本地库,
<localRepository>${user.home}/maven/repository</localRepository>
  • 配置maven私服。
<mirror>

<id>aliyun</id>

<name>aliyun Maven</name>

<mirrorOf>*</mirrorOf>

<url>https://maven.aliyun.com/repository/central</url>

</mirror>
  • 配置maven中的profile。
<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.1.3 STS整合maven配置

  • Maven Installations配置, 如图-1所示:

 

  • Maven User Settings配置:

 

  • 项目工作区编码设置 :  

 

2.1.4 STS工具使用基本优化

  • 禁用拼写检查,取消所示的拼写检查选项:  

 

  • 取消所示的连接选项配置: 

 

  • 关掉校验功能:  

 

  • 修改STS工具内存配置,打开SpringToolSuite4.ini文件,修改堆大小,如图所示:

 

2.2项目创建及结构分析

 

基于STS 集成开发工具,创建spring boot项目,其具体步骤如下:

第一步:打开项目新建窗口(快捷键 ctrl+n), 搜索spring,选择spring starter 项目。如图所示:

 

 

第二步:填写项目基本信息。如图所示:

 

第三步:选择Spring Boot版本,如图所示:

说明: 点击finish之后,项目便开始从maven配置中指定的私服服务器(例如阿里云的maven服务器)去下载起步依赖(SpringBoot项目中默认指定了项目启动时需要的一些jar包依赖),这个过程可能会比较耗时(网络最好不要用手机网络,会导致很多资源下载不下来),假如指定版本的springboot项目以前创建过,它会默认先从本地库查找,假如本地库没有,则从远程库去下载。

 

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

业务描述:创建一个DefaultCache类然后交给spring 管理。

@Component
@Scope("singleton")
@Lazy
public class DefaultCache {
	public Cache() {
	   System.out.println("cache()");
	}
	@PostConstruct
	public void init() {
		System.out.println("init()");
	}
	@PreDestroy
	public void destory() {
		System.out.println("destory");
	}
}

其中:

  • @Component 是spring中用于描述Bean类的一个注解
  • @Scope 是spring中用于定义Bean对象作用域的一个注解,其中常用的值有 Singleton , Prototype;

Singleton(单例作用域,在整个内存中只有一份), Prototype(每次获取对象时都会创建新的实例,并不会由Spring容器帮我管理);

  • @Lazy 注解用于描述类,其目的是告诉spring框架此类支持延迟加载!
  • @PostConstruct 注解用于描述bean对象声明周期方法中的初始化方法,此方法会在对象的构造方法之后执行
  • @PreDestory注解用于描述bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行;

添加sringboot 测试类,进行bean的获取及测试。

 

@SpringBootTest
public class DefaultCacheTests {
	@Autowired
	private DefaultCache defaultCache;
	@Test
	public void testCache() {
		System.out.println(defaultCache);
	}
}

其中:

@SpringBootTest注解用于告诉spring框架,此测试类交给spring管理

@Autowired注解用于描述属性或相关的方法(例如set方法,构造方法等),用于告诉spring容器为指定属性赋值

面试题: 能说说Spring框架管理Bean对象有什么优势吗?

1).spring是一个资源整合框架,通过spring可以将很多资源(自己写的对象或第三方提供的对象,例如连接池,Mybatis等)整合在一起,然后进行科学应用,以便更好的对外提供服务;

 

那再说说怎么进行科学的应用的呢?

1).spring框架可以为由它管理的对象(Bean)提供懒加载策略(对象暂时用不到,则无需加载和实例化),作用域(例如singleton-频繁用时可以考虑内存中只有一份,prototype-使用次数少时可以用时创建,不用时销毁),生命周期方法(更好地实现对象的初始化和资源销毁),以实现对象对系统资源的有效使用,同时Spring框架还可以基于用户设计管理对象与对象的依赖关系,以降低对象与对象之间的直接耦合,提高程序的可维护性和可扩展性;

 

2.4 项目业务增强实现及测试

第一步:定义业务Cache接口.

package com.cy.pj.common.cache;

public interface Cache {

}

第二步:定义WeakCache实现Cache接口.

package com.cy.pj.common.cache;

import org.springframework.stereotype.Component;

@Component
public class WeakCache implements Cache{

}

第三步:修改DefaultCache,让此类也实现Cache接口,关键代码如下:

@Component
public class DefaultCache implements Cache{
…
}

第四步:定义单元测试类

package com.cy.pj.common.cache;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class CacheTests {
	@Autowired
	@Qualifier("defaultCache")
	private Cache cache;
	
	@Test
	public void testCache() {
		System.out.println(cache);
	}
}

思考:

1).@Autowired注解应用规则

2).@Qualifier 注解的作用是什么?

 @Autowired由spring框架定义,用于描述类中属性或相关方法。Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,可以按照指定规则为属性赋值(DI)。其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。最后,假如我们有明确要求,必须要注入类型为指定类型,名字为指定名字的对象还可以使用@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autoired注解使用)。具体过程可参考图-1的设计进行自行尝试和实践。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值