### 前言 写这个是为了记录自己入门学习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 GetPathController( @PathVariable("id") Integer id, @PathVariable Map PathMap, @RequestHeader("User-Agent") String Agent, @RequestHeader Map HeaderMap, @RequestParam("age") Integer age, @RequestParam Map ParamMap, @CookieValue("test") String test ) { ``` ``` @PathVariable 获取请求路径对应的值 还可以使用Map接收传来的说有值,如Map @RequestHeader 获取请求的头部参数,User-Agent 表示获取请求的浏览器标识 还可以使用Map接收传来的说有值,如Map @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的表示为:  @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 { } ``` **需要使用的库的配置:** ``` 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的文档](https://baomidou.com/pages/49cc81/#service-crud-%E6%8E%A5%E5%8F%A3) --- [代码文件均在Github项目.](https://github.com/StarYuhen/Daily_Practice/tree/master/Java/SpringBootLearn) 这样差不多就入门了,剩下的我去看项目源码。 --- #### 测试注解 ``` /* 测试常用注解 ● @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:表示读取指定方法的返回值作为参数化测试入参(注意方法返回需要是一个流) */ // 使用测试 ``` Loading... ### 前言 写这个是为了记录自己入门学习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的表示为:  @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的文档](https://baomidou.com/pages/49cc81/#service-crud-%E6%8E%A5%E5%8F%A3) --- [代码文件均在Github项目.](https://github.com/StarYuhen/Daily_Practice/tree/master/Java/SpringBootLearn) 这样差不多就入门了,剩下的我去看项目源码。 --- #### 测试注解 ``` /* 测试常用注解 ● @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 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏
4 条评论
测试评论test
再次测试邮件通知
玉哥还让不让人活了
大佬,我老菜了