springboot初学(1)

307 阅读3分钟

这是我参与 8 月更文挑战的第 12 天,活动详情查看: 8月更文挑战

1. Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。

2. 一般情况下SpringBoot项目结构类似如下:

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- controller
      |  +- CustomerController.java
      |
      +- config
      |  +- swagerConfig.java
      |
  1. Application.java是项目的启动类
  2. domain 目录主要用于实体(Entity)与数据访问层(Repository)
  3. service 层主要是业务类代码
  4. controller 负责页面访问控制
  5. config 目录主要放一些配置类

3. @RequestMapping

用@RequestMapping来映射URL,一般将@RequestMapping放在类定义处和方法定义处。

类定义处:规定初步的请求映射,相对于web应用的根目录;

方法定义处:进一步细分请求映射,相对于类定义处的URL。如果类定义处没有使用该注解,则方法标记的URL相对于根目录而言;

@RequestMapping的默认属性为value,@RequestMapping(value="/example")相当于@RequestMapping("/example")

4. springboot原理探讨

(1) 自动配置

pom.xml

  • spring-boot-dependencies:核心依赖在父工程中
  • 我们在写或者引入一些springboot依赖时,不需要指定版本,就因为有这些版本仓库

启动器

  • <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-web</artifactId>
     </dependency>
    
  • 启动器说白了就是springboot的启动场景;

  • 比如spring-boot-starter-web,他会帮我们自动导入web环境所有的依赖;

  • springboot会将所有的功能场景,都变成一个个启动器;

  • 如果要使用什么功能,只需要找到对应的启动器

主程序

//@SpringBootApplication:标注这个类是一个springboot的应用
@SpringBootApplication
public class SpringbootO1HellowordApplication {

    public static void main(String[] args) {
        //将springboot应用启动
        SpringApplication.run(SpringbootO1HellowordApplication.class, args);
    }
    
}
  • 注解:
@SpringBootConfiguration  //springboot的配置
	@Configuration //spring配置类
		@Component //说明这是一个spring的组件
@EnableAutoConfiguration //自动配置
	@AutoConfigurationPackage //自动配置包
		@Import({Registrar.class})//导入选择器
	@Import({AutoConfigurationImportSelector.class})//自动配置导入选择

5. JSR-303

JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。

Bean Validation 中内置的 constraint

![截屏2021-07-14 下午3.10.35](springboot初学.assets/截屏2021-07-14 下午3.10.35.png)

Hibernate Validator 附加的 constraint

![截屏2021-07-14 下午3.10.57](springboot初学.assets/截屏2021-07-14 下午3.10.57.png)

转自www.jianshu.com/p/554533f88…

6. yaml配置文件位置及优先级

==优先级顺序:==

  1. file:./config/
  2. file:./
  3. classpath:/config/
  4. classpath:/

![截屏2021-07-14 下午3.24.10](springboot初学.assets/截屏2021-07-14 下午3.24.10.png)

7. @Controller 与@RestController区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

@RestController下return的语句会以字符串形式返回。

8. @GetMapping

@GetMapping注释将 HTTP GET 请求映射到特定的处理程序方法。 它是一个组合的注释,用作@RequestMapping(method = RequestMethod.GET)的快捷方式。

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据。

9. 处理静态资源

(1)在springboot中,我们可以使用以下方式处理静态资源

  • webjars localhost:8080/webjars/
  • Public, static, /** ,resources. Localhost:8080/

(2) 优先级:resources>static(默认) > public