Spring Boot开发环境

一、什么是SpringBoot

       自2002年以来,Spring一直在迅速发展,现已成为Java EE开发中的真正标准。然而,随着技术的进步,Java EE使用Spring逐渐变得繁琐。大量的XML文件存在于项目中,复杂的配置以及与第三方框架的整合导致了开发和部署效率的降低。

       2012年10月,Mike Youngstrom在Spring jira中创建了一个功能请求,要求在Spring框架中支持无容器Web应用程序体系结构。他提出,如果Spring的Web应用体系结构能够利用Spring组件和配置模型的工具和参考体系结构,从上到下简化,并在简单的main()方法引导的Spring容器内统一这些常用Web容器服务的配置,将会有很大的帮助。

       这一要求促使了2013年初开始的Spring Boot项目的研发。至今,Spring Boot的版本已经达到了3.2.0。Spring Boot并不是用来替代Spring的解决方案,而是与Spring框架紧密结合,用于提高Spring开发者的体验。

       Spring Boot集成了大量常用的第三方库配置,使得这些第三方库在Spring Boot应用中能够实现零配置的开箱即用。大部分的Spring Boot应用只需要非常少量的Java配置代码,使开发者能够更加专注于业务逻辑。

二、为什么学习 Spring Boot

       1. 从 Spring 官方来看

       打开 Spring 的官方网站 http://spring.io/。可以看到官方对 Spring Boot 的定位:Build Anything,Build 任何东西。Spring Boot 旨在尽可能快地启动和运行,并且只需最少的 Spring 前期配置。同时也可以看到官方两个的

       定位:

  • SpringCloud:Coordinate Anything 协调任何事情;
  • SpringCloud Data Flow:Connect everything 连接任何东西。

       Spring 官网对 Spring Boot、SpringCloud 和 SpringCloud Data Flow 三者定位的措辞非常有味道,同时也可以看出,Spring 官方对这三个技术非常重视,是现在以及今后学习的重点。

       2. 从 Spring Boot 的优点来看

  • 减少开发,测试时间和努力。
  • 使用 JavaConfig 有助于避免使用 XML。
  • 避免大量的 Maven 导入和各种版本冲突。
  • 提供意见发展方法。
  • 通过提供默认值快速开始开发。
  • 没有单独的 Web 服务器需要。这意味着不再需要启动 Tomcat,Glassfish 或其他任何东西。
  • 需要更少的配置因为没有 web.xml 文件。只需添加用 Configuration 注释的类,然后添加用 Bean 注释的方法,Spring 将自动加载对象并像以前一样对其进行管理。甚至可以将 Autowired 添加到 bean 方法中,以使Spring 自动装入需要的依赖关系中。
  • 基于环境的配置使用这些属性,可以将正在使用的环境传递到应用程序:例如命令行参数配置值为-Dspring.profiles.active={enviornment} 。 在 加 载 主应 用 程 序 属 性 文 件 后 , Spring 将 在(application-{environment}.properties)中加载后续的应用程序属性文件。
       2.2.1 良好的基因
       Spring Boot 是伴随着 Spring 4.0 诞生的,从字面理解,Boot 是引导的意思,因此 Spring Boot 旨在帮助开发者快速搭建 Spring 框架。Spring Boot 继承了原有 Spring 框架的优秀基因,使 Spring 在使用中更加方便快捷。
       2.2.2 简化编码
       举个例子,如要创建一个 web 项目,使用 Spring 的人都知道,在使用 Spring 的时候,需要在 pom 文件中添加多个依赖,而 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中只需要在 pom 文件中添加一个 starter-web 依赖即可。
 
1 <dependency>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-web</artifactId>
4 </dependency>
       点击进入该依赖后可以看到,Spring Boot 这个 starter-web 已经包含了多个依赖,包括之前在 Spring 工程中需要导入的依赖
 1 <dependency>
 2 <groupId>org.springframework</groupId>
 3 <artifactId>spring-web</artifactId>
 4 <scope>compile</scope>
 5 </dependency>
 6 <dependency>
 7 <groupId>org.springframework</groupId>
 8 <artifactId>spring-webmvc</artifactId>
 9 <scope>compile</scope>
10 </dependency>
       由此可以看出,Spring Boot 大大简化了编码,不用一个个导入依赖,直接一个依赖即可。
       2.3 简化配置
       Spring 虽然使 Java EE 轻量级框架,但由于其繁琐的配置,一度被人认为是配置地狱。各种 XML、Annotation配置会让人眼花缭乱,而且配置多的话,如果出错了也很难找出原因。Spring Boot 更多的是采用 Java Config的方式,对 Spring 进行配置。
       新建一个类但是不用@Service 注解,也就是说,它是个普通的类,那么如何使它也成为一个 Bean 让 Spring去管理呢?只需要@Configuration 和@Bean 两个注解即可
 1 public class TestService { 
 2 public String sayHello () { 
 3 return "Hello Spring Boot!"; 
 4 }
 5 
 6 } 
 7 对应的配置类 
 8 import org.springframework.context.annotation.Bean; 
 9 import org.springframework.context.annotation.Configuration; 
10 @Configuration 
11 public class JavaConfig { 
12 @Bean 
13 public TestService getTestService() { 
14 return new TestService(); 
15 } 
16 }
       @Configuration 表示该类是个配置类,@Bean 表示该方法返回一个 Bean。这样就把 TestService 作为 Bean 让Spring 去管理了,在其他地方如果需要使用该 Bean,和原来一样,直接使用@Resource 注解注入进来即可使用,非常方便。
       @Resource
       private TestService testService;
       另外部署配置方面,原来 Spring 有多个 xml 和 properties 配置,在 Spring Boot 中只需要个 application.yml即可。
       2.4 简化部署
       在使用Spring时项目部署时需要在服务器上部署 tomcat,然后把项目打成war 包扔到 tomcat 里,在使用SpringBoot 后,不需要在服务器上去部署 tomcat,因为 Spring Boot 内嵌了 tomcat,只需要将项目打成 jar 包,然后使用 java -jar xxx.jar 一键式启动项目。另外,也降低对运行环境的基本要求,环境变量中有 JDK 即可。
       2.5 简化监控
       可以引入 spring-boot-start-actuator 依赖,直接使用 REST 方式来获取进程的运行期性能参数,从而达到监控的目的,比较方便。但是 Spring Boot只是个微框架,没有提供相应的服务发现与注册的配套功能,没有外围监控集成方案,没有外围安全管理方案,所以在微服务架构中,还需要 Spring Cloud 来配合一起使用。
       2.6 从未来发展的趋势来看
       微服务是未来发展的趋势,项目会从传统架构慢慢转向微服务架构,因为微服务可以使不同的团队专注于更小范围的工作职责、使用独立的技术、更安全更频繁地部署。而继承了 Spring 的优良特性,与 Spring 一脉相承,而且支持各种 REST API 的实现方式。Spring Boot 也是官方大力推荐的技术,可以看出,Spring Boot 是未来发展的一个大趋势。
 

三、Spring Boot 开发环境

       1. jdk 的配置

       使用 IDEA 进行开发,在 IDEA 中配置 jdk 的方式很简单,打开 File->Project Structure
  1. 选择 SDKs
  2. 在 JDK home path 中选择本地 jdk 的安装目录
  3. 在 Name 中为 jdk 自定义名字
       通过以上三步骤,即可导入本地安装的 jdk。如果是使用 STS 或者 eclipse 可以通过两步骤添加:
  • window->preference->java->Instralled JRES 来添加本地 jdk。
  • window-->preference-->java-->Compiler 选择 jre,和 jdk 保持一致。

       2. Spring Boot 工程的构建

       2.1 IDEA 快速构建
       IDEA 中可以通过 File->New->Project 来快速构建 Spring Boot 工程。选择 Spring Initializr,在 Project SDK 中选择刚刚导入的 jdk,点击 Next,到了项目的配置信息。
  • Group:填企业域名,一般采用域名反装的方式定义,例如使用 com.yan
  • Artifact:填项目名称,例如工程名 demo,如果项目规模较大这里可能会采用模块名称
  • Dependencies:可以添加项目中所需要的依赖信息,根据实际情况来添加,这里只需要选择 Web 即可。
       2.2 官方构建
       第二种方式可以通过官方构建,步骤如下:
1、访问 http://start.spring.io/或者 http://start.aliyun.com/。
2、在页面上输入相应的 Spring Boot 版本、Group 和 Artifact 信息以及项目依赖,然后创建项目。
3、下载解压后,使用 IDEA 导入该 maven 工程:File->New->Model from Existing Source,然后选择解压后的项目文件夹即可。如果是使用 eclipse 可以通过 Import->Existing Maven Projects->Next,然后选择解
压后的项目文件夹即可。
       2.3 maven 配置
       创建 Spring Boot 项目后需要进行 maven 配置。打开 File->settings,搜索 maven,配置一下本地的 maven 信息。
       在 Maven home directory 中选择本地 Maven 的安装路径;在 User settings file 中选择本地 Maven 的配置文件所在路径。在配置文件中配置一下国内阿里的镜像,这样在下载 maven 依赖时,速度很快。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
       如果是使用 eclipse 可以通过 window-->preference-->Maven-->User Settings 来配置,配置方式和上面一致。
       2.4 编码配置
       同样地新建项目后,一般都需要配置编码,这点非常重要,很多初学者都会忘记这一步,所以要养成良好的习
惯。
       IDEA 中仍然是打开 File->settings,搜索 encoding,配置一下本地的编码信息。
       如果是使用 eclipse 有两个地方需要设置一下编码:
1、window--> perferences-->General-->Workspace,将 Text file encoding 改成 utf-8
2、window-->perferences-->General-->content types,选中 Text,将 Default encoding 填入 utf-8
       这样编码设置完成即可启动项目工程了。
       3. Spring Boot 项目工程结构
       Spring Boot 项目总共有三个模块
src/main/java 路径:主要编写业务程序
src/main/resources 路径:存放静态文件和配置文件
src/test/java 路径:主要编写测试程序
       默认情况下会创建一个启动类 Demo01Application,该类上面有个@SpringBootApplication 注解,该启动类中有个 main 方法,Spring Boot 启动只要运行该 main 方法即可,非常方便。另外 Spring Boot 内部集成了 tomcat,不需要人为手动去配置 tomcat,开发者只需要关注具体的业务逻辑即可。到此为止 Spring Boot 就启动成功了,为了比较清楚的看到效果,可以写一个 Controller 来测试。注意后续开发中定义的包必须是主包的子包,例如主包为 com.yan,则以后的包名称为 com.yan.biz 业务、com.yan.dao等。进入企业的第一件事情应该是了解公司的编程规范
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

 

       @RestController
       复合注解@Controller+@ResponseBody,@Controller 用于声明当前类是一个控制器类,而且通过自动组件扫描会成为受管 bean,@ResponseBody 用于声明当前类方法的返回值会自动转换为 JSON格式
       @RequestMapping("/start") 针对当前类中的所有方法声明名空间。定义@RequestMapping 时如果没有属性名称则默认名称为 value,value 实际上是 path 属性的别名,只有一个属性 value 时,value 可以省略;如果多个属性时则 value 不能省略。如果不定义 method 请求方法时,则所有的请求方法均可匹配
1 public class StartController {
2 @RequestMapping("/springboot") 针对方法进行地址映射,这里的请求 URL 地址为/start/springboot,
3 不是/springboot
4 public String startSpringBoot() {
5 return "Welcome to the world of Spring Boot!";
6 }
7 }

 

       重新运行 main 方法启动项目,在浏览器中输入 localhost:8080/start/springboot,如果看到 Welcome to theworld of Spring Boot!,那么项目启动成功!Spring Boot 就是这么简单方便!端口号默认是 8080,如果想要修改,可以在 application.yml 文件中使用 server.port 来人为指定端口,如 8001 口:
server:
port: 8001
在具体的应用开发中可以使用 properties 配置文件或者 yaml 配置文件两种
 

四、总结

       快速学习在 IDEA 中导入 jdk 以及使用 IDEA 如何配置 maven 和编码,如何快速的创建和启动 Spring Boot 工程。IDEA 对 Spring Boot 的支持非常友好,建议使用 IDEA

 

posted @ 2023-07-27 14:51  尘白  阅读(104)  评论(0)    收藏  举报