前言

写这个是为了记录自己入门学习SpringBoot框架的入门文章,并没有看源码之类的,哪些后面再看。

学习SpringBoot框架总计用了9个小时。

学会了基础的使用和redis,mysql的配置使用。

还有记录遇到的坑之类的


参数及注释和坑

入口参数

@SpringBootApplication(scanBasePackages = "com.example")
// 引用mybatis plus 同时扫描mapper包
@MapperScan("com.example.springbootlearn.mapper")

这两个注释我通常放在入口处。

SpringBootApplication 内的扫描包,可以自动扫描里面的组件及其他

MapperScan则是扫描mapper,则不需要继承的函数使用@Mapper的重复注释


关于网址请求

@RestController

这个是路由的控制层,是@Controller @ResponseBody合并一起的简易方式

    @GetMapping("/get/{id}/test/{name}")
    public Map<String, Object> GetPathController(
            @PathVariable("id") Integer id,
            @PathVariable Map<String, String> PathMap,
            @RequestHeader("User-Agent") String Agent,
            @RequestHeader Map<String, String> HeaderMap,
            @RequestParam("age") Integer age,
            @RequestParam Map<String, String> ParamMap,
            @CookieValue("test") String test
    ) {
    @PathVariable 获取请求路径对应的值
        还可以使用Map接收传来的说有值,如Map<String,String>
    @RequestHeader 获取请求的头部参数,User-Agent 表示获取请求的浏览器标识
        还可以使用Map接收传来的说有值,如Map<String,String>
    @RequestParam 获取请求的Param值,如Get的/get/test?age=10&name="Test"
    @CookieValue 获取请求的Cookie值
    @RequestAttribute 获取域属性
    @RequestBody 获取post请求的Json值 会自动序列化

其中的GetMapping则是网址请求的简易写法,PostMapping则是Post请求的写法。

    @RequestMapping(value = "Name", method = RequestMethod.POST)

关于网址响应

    @ResponseBody // 响应body

则需要在方法上加上这个注释,我们想要响应xml和json形式则是需要导入两个插件库

    // 引用响应json库
    implementation 'org.springframework.boot:spring-boot-starter-json'
    // 引用响应xml库
    implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'

SpringBoot会自动根据accpet的请求来自动判断返回xml还是json数据,其中需要开启配置。

# accept
spring.mvc.contentnegotiation.favor-parameter=true

自定义组件

@Component

使用这个注释就完事,同时还可以自定义话,往里面加指定的类就行

@Import({AsyncAppender.class})

  @Bean("PetConfig")

这个注释则是声明容器组建的指定ID,相当于名字。

还有一种过滤参数:

// 设置当容器中有该组件,此配置类代码才生效,进行组件注入,,谈过没有指定组件,注释下面的代码全部无法使用
// 如:此配置类没有PetConfig的组件,则MyConfig全部无法使用,若在方法前面加上该注释,没有满足条件则会该方法无法使用
@ConditionalOnBean(name = "PetConfig")

当我们需要判断其中的组件是否使用,或者查看使用哪些组件,可以在SpringBoot的入口处查看:

//        ConfigurableApplicationContext run = SpringApplication.run(SpringBootLearnApplication.class, args);
        // 查看框架使用的组件
//        String[] GetSpringBootName = run.getBeanDefinitionNames();
//        for (String Name : GetSpringBootName) {
//            System.out.println(Name);
//        }
//        // 获取指定组件
//        Pet pet = run.getBean("PetConfig", Pet.class);
//        System.out.println(pet);
        // 获取容器中有没有指定组件
//        boolean Pet = run.containsBean("PetConfig");
//        System.out.println(Pet);

如何自定义读取配置yaml

// 获取配置文件信息,由于是有前缀的形式,所以需要使用此函数
@PropertySource(value = "classpath:application.yaml")
@ConfigurationProperties(prefix = "database")
// 使用注解自行注入setter和getter 方法,虽然可以自动生成,但是还是可以用lombok方法
@Data

这里表示的注释在yaml的表示为:

91bf9aae-6385-4542-95ef-9c1045cf3e26.png

@Data 是lombok库的方法,这个库更多的是提供private变量的setter和getter方法,自动生成

    // lombok 简易开发库 自动注入就用  annotationProcessor导入
    annotationProcessor 'org.projectlombok:lombok'
    // 同时导入build时的包
    compileOnly 'org.projectlombok:lombok'

如何使用mybatis plus

  1. 定义一个包含数据表参数的类

    @Data
    public class User {
        private Long id;
        private String name;
        private Integer age;
        private String email;
    }
  2. 使用接口继承mybatis plus的类

    @Component
    public interface UserMapper extends BaseMapper<User> {
    
    }
    

需要使用的库的配置:

implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
    // 使用数据库管理池 阿里的,又一个kpl项目 需要指定版本
    // implementation 'com.alibaba:druid:1.2.15' 使用spring框架官方版
    implementation 'com.alibaba:druid-spring-boot-starter:1.2.15'
    // 引用java mysql 驱动
    implementation 'mysql:mysql-connector-java'
    // 引用mybatis
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1'
    // 引用mybatis-plus https://baomidou.com/pages/24112f/#%E6%94%AF%E6%8C%81%E6%95%B0%E6%8D%AE%E5%BA%93
    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.3.1'

之所以展示出来配置,是因为部分情况可能找错包,这里对应一下。

想要使用SpringBoot和Mybatis plus的测试包,配置则是需要写入:

    // 引用SpringBoot测试库
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    // 引用mybatis plus 测试库
    testImplementation 'com.baomidou:mybatis-plus-boot-starter-test:3.5.3.1'

Mybatis plus的文档


代码文件均在Github项目.

这样差不多就入门了,剩下的我去看项目源码。


测试注解

/*
测试常用注解
● @Test :表示方法是测试方法。但是与JUnit4的@Test不同,他的职责非常单一不能声明任何属性,拓展的测试将会由Jupiter提供额外测试
● @ParameterizedTest :表示方法是参数化测试,下方会有详细介绍
● @RepeatedTest :表示方法可重复执行,下方会有详细介绍
● @DisplayName :为测试类或者测试方法设置展示名称
● @BeforeEach :表示在每个单元测试之前执行
● @AfterEach :表示在每个单元测试之后执行
● @BeforeAll :表示在所有单元测试之前执行
● @AfterAll :表示在所有单元测试之后执行
● @Tag :表示单元测试类别,类似于JUnit4中的@Categories
● @Disabled :表示测试类或测试方法不执行,类似于JUnit4中的@Ignore
● @Timeout :表示测试方法运行如果超过了指定时间将会返回错误
● @ExtendWith :为测试类或测试方法提供扩展类引用
 */
// 可通过assertions类进行断言
/*
 往测试里面注入参数
@ValueSource: 为参数化测试指定入参来源,支持八大基础类以及String类型,Class类型
@NullSource: 表示为参数化测试提供一个null的入参
@EnumSource: 表示为参数化测试提供一个枚举入参
@CsvFileSource:表示读取指定CSV文件内容作为参数化测试入参
@MethodSource:表示读取指定方法的返回值作为参数化测试入参(注意方法返回需要是一个流)
 */
// 使用测试
最后修改:2023 年 03 月 19 日
如果觉得我的文章对你有用,请随意赞赏