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 {
    @Override
    public 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 {


    @Resource
    private DemoInfo demoInfo;

    //    @Autowired
    @Resource //建议使用@Resource注解
    private DemoService demoService;


    @RequestMapping("/hello")//@RequestMapping 都被HTTP Request映射到指定的映射路径中如:/Hello
    public 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;


@SpringBootApplication

public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

在这里插入图片描述

在这里插入图片描述
这时候说明我们测试成功了,Hello World已经成功输出出来了。

单元测试

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

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

测试使用断言测试比较好

在这里插入图片描述
测试的代码:

 @Test
    public void contextLoads() {
        String str = demoService.sayHello();
        Assert.assertNotNull(str);//断言,是否为空,Null
        Assert.assertTrue(str.equals("Hello World"));//断言,判断返回的值是否为Hello World
        System.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(面向切面),省略了过多繁琐的配置文件,对于我们程序猿来说就是捡到宝了,反正就易上手,一学就会,一看就懂。

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

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值