这里写目录标题

  • 项目结构介绍
    • pom包介绍
      • 编写代码:实现一个HelloWorld
        • 运行访问:
          • 单元测试
            • Spring Boot的核心

项目结构介绍


1.Spring Boot的基础结构共三个文件:

  • src/main/java程序开发以及主程序入口
  • src/main/resources配置文件
  • src/test/java测试程序

另外,SpringBoot建议的目录结构:
root package结构:com.aiweiyi.lt.demo

如:com.aiweiyi.ch01-sb目录下:

main→java目录:

  • Application.java: 建议放到更目录下main,是项目的启动类,主要用于做一些框架配置
  • comm(config):目录建议放置公共类,如全局的配置文件、工具类等 如:utils、tool
  • repository(mapper):主要是数据库访问层代码 如DAO层
  • service:主要是业务逻辑层代码
  • web主要是表示层代码

main→resources目录:

  • static:目录存放web访问的静态资源,如js、css、图片等
  • templates:目录存放页面模板
  • application.properties:存放项目的配置信息

test:目录存放单元测试的代码
pom.xml:用于配置项目依赖包,以及其他配置

也可以根据默认设置可以省去一些不必要的设置,
也可以根据一些需求进行配置进行修改。

pom包介绍

pom.xml文件主要描述了项目包的依赖和项目构建时的配置,在默认的pom.xml包中分为四大(块)部分:

  1. 第一部分为项目的描述信息:
<!--第一部分为项目的描述信息--><groupId>com.aiweiyi.lt</groupId><!--groupId:公司域名--><artifactId>demo</artifactId><!--artifactId:项目名称--><version>0.0.1-SNAPSHOT</version><!--version项目版本号--><name>demo</name><!--name:项目名称--><description>Demo project for Spring Boot</description><!--description:项目描述-->
  • groupId:公司域名
  • artifactId:项目名称
  • version项目版本号
  • name:项目名称
  • description:项目描述
  1. 第二部分为项目的依赖配置描述信息:
<!--    第二部分为项目的依赖配置描述信息--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.15.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><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><scope>test</scope></dependency><dependency><groupId> org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies><!--   dependencies:标签内配置项目苏鸥需要的依赖包 --><!--parent:标签内配置Spring Boot父级版本spring-boot-starter-parent支持项目的父子结构-->
  • groupId:公司域名
  • artifactId:项目名称
  • version项目版本号
  • name:项目名称
  • relativePath:设定一个空值将始终从仓库中获取,不从本地路径获取
  • parent:标签内配置Spring Boot 父级版本 spring-boot-starter-parent,Maven支持项目的父子结构,引入父级后悔默认继承父类的配置。
  • dependencies:标签内配置项目所需要的依赖包,Spring Boot体系内的依赖组件不需要填写具体版本号,spring-boot-starter-parent 维护了体系内所有依赖包的版本信息。
  • 本项目的依赖除了我们自己勾选的spring-boot-starter-web外,还默认包括了spring-boot-starter-test,spring-boot=starter-test是Spring Boot提供测试的工具包,内置了多种测试工具,方便我们在项目中做单元测试、集成测试。
  1. 第三部分为构建时需要的公共变量:
<!--    第三部分为构建时需要的公共变量--><properties><java.version>1.8</java.version><!--指定了JDK的版本        --><!--        通常会指定字符编码--></properties>
  • 此处默认只指定了项目使用的JDK版本,我们通常还会指定使用的字符编码等。
  1. 第四部分构建配置:
<!--    第四部分构建配置--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
  • 使用Maven构建Spring Boot项目必须依赖于spring-boot-maven-pligin组件,spring-boot-maven-plugin能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能,spring-boot-Maven-plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以简单的方式运行Spring Boot应用。

  • 以上即为pom.xml文件基础内容,几乎所有的Spring Boot项目都会用到以上配置信息。

这样一个简单的Spring Boot项目就搭建好啦。

编写代码:实现一个HelloWorld

俗话说没有写过一个HelloWorld的程序猿不是一个合格的程序猿

我们首先,先使用Spring Boot实现一个HelloWorld

在com.aiweiyi.lt.demo.service包下创建一个DemoService接口:

package com.aiweiyi.lt.demo.service;
/*** DemoService* 接口* 业务逻辑层*/
public interface DemoService {public String sayHello();
}

在com.aiweiyi.lt.demo.service.impl包下创建一个DemoServiceImpl实现类:

package com.aiweiyi.lt.demo.service.impl;import com.aiweiyi.lt.demo.service.DemoService;
import org.springframework.stereotype.Service;/*** DemoServiceImpl* 实现DemoService接口* 实现类*/
@Service("demoService")
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello() {return "Hello World";}
}

在com.aiweiyi.lt.demo.service.controller包下创建一个HelloController控制器:

package com.aiweiyi.lt.demo.controller;import com.aiweiyi.lt.demo.pojo.DemoInfo;
import com.aiweiyi.lt.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** HelloController* 控制器*/
@RestController
public class HelloController {@Resourceprivate DemoInfo demoInfo;//    @Autowired@Resource //建议使用@Resource注解private DemoService demoService;@RequestMapping("/hello")//@RequestMapping 都被HTTP Request映射到指定的映射路径中如:/Hellopublic String hello() {String msg = demoService.sayHello();return msg;}
}
  • @RestController的意思是Controller里面的方法都已JSON格式输出,不需要有其他额外的配置,如果配置@Controller,代表输出内容到页面,现在我们不需要输出内容在页面了,都是以响应的方式接收数据。
  • @RequestMapping("/hello")提供路由信息,"/hello"路径Http Request 都会被映射到hello()方法上进行处理。

运行访问:

右击运行启动项

package com.aiweiyi.lt.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}


这时候说明我们测试成功了,Hello World已经成功输出出来了。

单元测试

针对于测试我们使用Junit使用的几条建议:

  • 测试方法上必须使用@Test进行修饰
  • 测试方法必须使用public void 进行修饰,不能带任何的参数
  • 新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
  • 测试类所在的包名应该和被测试类所在的包名保持一致
  • 测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
  • 测试类使用Tester作为类名的后缀(不是必须)
  • 测试方法使用test作为方法名的后缀(不是必须)

测试使用断言测试比较好


测试的代码:

 @Testpublic void contextLoads() {String str = demoService.sayHello();Assert.assertNotNull(str);//断言,是否为空,NullAssert.assertTrue(str.equals("Hello World"));//断言,判断返回的值是否为Hello WorldSystem.out.println(str);}
Spring Boot的核心

Spring Boot指在通过最少的Spring前期配置使您基金快启动运行,它的核心设计是:约定优于配置。

约定优于配置
那什么是约定优于配置呢?
约定优于配置(Convention Over Configuration),也称按约定编程,是一种软件设计范式,指在减少软件开发人员需做决定的数量、获得简单的好处,而不失灵活性。

通俗的来讲,就是指开发人员仅需规定应用中不符约定的部分,我们实体(模型)类定义的是User类,那我们数据库中对应的就会默认命名为user,只有在偏离这一约定时,该命名为user_info,这是我们CIA需写有关这个名字的配置。

我们可以按照整体思路来设想,我们约定Controller(控制层)就是Web请求层可以省略MVC的配置,我们约定在Service结尾的类自动注入事务,就可以省略了Spring的(面向切面)切面事务配置。

在Spring体系讲约定优于配置的思想展现的淋漓尽致,小到配置文件、中间件的默认配置,大到内置容器、首页哪个台中的各种Starter,无不遵循此设计规则,Spring Boot 鼓励个软件组织方创建自己的Starter,创建Starter的核心功能,在启动的时候进行自动装配,属性默认化配置。

Spring Boot
Spring Boot可以说是简化的配置和总舵的Starters才让Spring Boot变得简单,易用、快速上手,也可以说正是约定优于配置的思想彻底落地才让Spring Boot 走向辉煌,Spring Boot约定优于配置的思想让Spring Boot项目非常容易上手,让编程更加的简单,其实编程本该很简单,简单才是编程的没。

什么是Starters启动器
Starter可以理解成为一个启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找一些相关的代码和依赖包,假设你需要访问数据库就需要使用Spring Data JPA即可,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了。

Spring Boot Starter基于约定优于配置的理念来设计,Spring Boot Starter中有俩个核心组件:自动配置代码和提供自动配置模块及其有用的依赖,也就是说我们项目中需要引入某个Starter,一般有默认配置好的,根据自身的需求去配置即可。

Spring Boot拥有强大融合社区开源软件的能力,在没有Spring Boot之前我们都需要按照没有开源软件的特性,将对应组件包集成到我们的开发项目中,因为每个组件的设计理想和其他的团队都不一致,因此就会导致很多的一些编码或项目风格不一致。

spring就等于说一个全家桶,有各种类型的spring,把一些层、组件拆分为模块来管理,以便互相依赖服用。

总结一下Spring Boot:
Spring Boot是一种对SSM(Spring+SpringMVC+MyBatis)框架的一种简化,不需要我们建立过多的一些配置文件,还有一些spring的声明式事务还有Spring的核心:SpringIOC(控制反转也称依赖注入)和SpringAOP(面向切面),省略了过多繁琐的配置文件,对于我们程序猿来说就是捡到宝了,反正就易上手,一学就会,一看就懂。

希望俺能够帮助到我的真果粒们!!!

Spring Boot入门操作(轻熟易懂)相关推荐

  1. spring boot入门(九) springboot的过滤器filter。最完整、简单易懂、详细的spring boot教程。

    关于过滤器和拦截器的区别,已经spring boot入门(七)中说明.下面举个过滤器的应用场景,比如用户信息页只有再用户登录后才可以进入,没有登录的用户是无法进入的,此时便可以采用过滤器来讲没有登录的 ...

  2. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  3. Spring Boot 入门与实战笔记

    **一.**Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 20 ...

  4. Spring Boot 入门之缓存和 NoSQL 篇(四)

    原文地址:Spring Boot 入门之缓存和 NoSQL 篇(四) 博客地址:http://www.extlight.com 一.前言 当系统的访问量增大时,相应的数据库的性能就逐渐下降.但是,大多 ...

  5. Spring boot入门(三):集成AdminLTE(Freemarker),结合generate代码生成器,利用DataTable和PageHelper分页...

    Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示 标题 ...

  6. Spring Boot入门到精通(超详细)

    1.Spring Boot简介 我们知道,从 2002 年开始,Spring 一直在飞速的发展,如今已经成为了在Java EE(Java Enterprise Edition)开发中真正意义上的标准, ...

  7. 动力节点郭鑫Spring Boot入门学习笔记,收藏起来慢慢看

    做 Java 开发的,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,如果啃不下来,很可能就与大厂失之交 ...

  8. Spring Boot 入门笔记

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  9. 史上最全,Spring Boot入门篇总结,收藏起来慢慢看

    Spring Boot是Spring家族下的一个全新开发框架,其设计目的主要是用来简化Spring应用的创建及开发过程,它提供了自动配置,starter依赖等特性,从而使开发人员从大量的XML配置中解 ...

最新文章

  1. linux启动关闭脚本,Linux下自动启动关闭Oracle脚本
  2. Requirejs快速使用
  3. Java字符串String比较不要用==原因
  4. 部署 k8s Cluster(下)- 每天5分钟玩转 Docker 容器技术(119)
  5. 2.1Dynamics 365 安装问题——无法访MSCRM_CONFIG数据库
  6. 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)
  7. 如何使用域组策略(AD GPO)分发软件安装以及卸载[1.31.2013更新]
  8. 信息学奥赛一本通 1126:矩阵转置 | OpenJudge NOI 1.8 10:矩阵转置
  9. Linux 后台执行脚本或命令 nohup
  10. 怎么查看oracle中sys的密码修改,oracle sys 密码修改
  11. Sphinx以及coreseek的安装及使用
  12. 间接寻址级别不同_单片机指令系统与寻址方式
  13. R语言从原点开始作图
  14. Word 模板引擎 poi-tl
  15. 国务院《政务信息资源共享管理暂行办法》带来哪些新商机?
  16. 匿名管道 与 命名管道
  17. CMPSS 涡扇发动机模型
  18. Android Studio gradle 自定义签名设置
  19. 解决 :No active profile set, falling back to default profiles: default 问题
  20. 好好说话之IO_FILE利用(1):利用_IO_2_1_stdout泄露libc

热门文章

  1. layuiadmin上手好难_【王者荣耀】凯皇教程,冰心不死流,新手也能快速上手!...
  2. 无贡献、无创新、无思路,ML领域准博士求助:论文到底要怎么创新? | Reddit热议...
  3. web前端 (17)插件开发+BootStrap
  4. Leetcode周赛专题
  5. 社招 | 华为合作CV算法岗
  6. 操作系统实验--30天自制操作系统第5天实验日志
  7. js 四句话搞懂原型和原型链
  8. React笔记随笔---kalrry
  9. ffmpeg多路视频推流,分别接流(不合并)
  10. STM32移植FatFS文件系统最新版R0.14b