Spring Boot

基础介绍

1. 约定由于配置

    Build Anything with Spring BootғSpring Boot is the starting point for building all Spring-based applications. 
Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring.

  约定优于配置(Convention over onfiguration),又称按约定编程,是一种软件设计范式

  本质上是说,系统、类库或框架应该嘉定合理的默认值,而非要求提供不必要的配置。

  约定优于配置简单来理解,就是遵循约定。

2. Spring Boot 简介

 2.1. Spring 优缺点分析

  优点

  Spring是java企业版(Java Enterprise Edittion,JEE)的轻量级代替品。无需开发重量级的Enterprise javaBean(EJB),Spring 为企业级java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的java 对象(Plain Old Java Object,pojo)实现EJB的功能

  缺点:

  虽然Spring的组件是轻量级的,但它的配置确实重量级的,一开始,Spring 用XML 配置,而且是很多XML配置。Spring 2.5 引入基于注解的组件扫面,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方法是,可以代替XML。所有这些配置都代表了开发时的损耗。因为在思考Spring 特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写引用程序逻辑的时间。和所有框架一样,Spring 实用,但与此同时它要求的回报也不少。

  除此外,项目的依赖管理也是一件耗时耗力的事情,在环境搭建时,需要分析导入那些库的坐标,而且还需要分析导入与之有依赖管理的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进展

   2.2. Springboot 解决上述Spring问题

  SpringBoot 对上述Spring 的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期

  起步依赖

  起步依赖本质上是一个Maven项目对象模型(Project Object Model,pom),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具有某种功能的坐标打包到一起,并提供一些默认的功能

  自动配置

  SpringBoot 的自动配置,指的是SpringBoot,会自动将一些配置类的bean注册进ioc容器,我们可以在需要的地方使用@Autowired 或者 @Resource 等注解来使用它。

  “自动”的表现形式就是我们只需要引我们想使用的功能包,相关的配置,我们完全不用管,SpringBoot 会自动注入这些配置的Bean,我们直接使用这些Bean 即可

  SpringBoot:简单、快速、方便的搭建项目;对主流开发框架的无配置集成;极大的提高了开发、部署效率

 

全局配置文件

  全局配置文件能够对一些默认配置值进行修改。SprignBoot 使用一个application.properties或者application.yml/yaml 的文件作为全局配置文件,该文件存放在指定目录,官网截图:

 

  我们可以在配置文件中定义SpringBoot 项目的相关属性,当然,这些相关属性可以是系统属性、环境变量、命令参数等,也可以是自底你配置文件名称和位置

 

配置文件属性值注入

  使用SpringBoot 全局配置文件设置属性时:如果配置属性是SpringBoot已有属性,例如server.port,那么SpringBoot 内部会自动扫描并读取这些配置文件中的属性值并覆盖默认属性

  如果配置的属性是用户自定义属性,例如:自定义的Person类实体属性,还必须在程序中注入这些配置属性方可生效

1. 使用 @ConfigurationProperties注入属性

  SpringBoot 提供的@configuration 注解用来快速、方便的将配置文件中的自定义属性值批量注入到某个Bean对象的多个对应属性中

  下面示例:将配置文件中前缀为person的配置如:person.id=123,通过setter 方法进行注入【需要使用@Conponent,注册为Bean】

@Component
@ConfiguratioinProperties(prefix="person")
public class Person {

    private Integer id;
    private String name;
  // 省略setter getter方法 }

2. 使用@Value 注入属性

  @Value 注解是Spring 框架提供的,用来读取配置文件中的属性值,并注入到Bean 对象的对应属性中,@Vlaue是通过属性注入的,可以没有setter方法

@Component public class Student {
      @Value("${person.id}")      
      private int id;      

      @Value("${person.name}")      
      private String name;      
        
}

3. 自定义配置

  我们可以自定义一个配置文件:

# test.properties
test.id=110
test.name=test

  配置类

 @Configuration  // 自定义配置类
 @PropertySource("classpath:test.properties")  //指定自定义配置文件:位置,名称
 @EnableConfigurationProperties(MyProperties.class) //开启对应配置类的属性注入
 @ConfigurationProperties(prefix = "test")  // 指定配置文件注入的属性前缀
 public class MyProperties {      
    private int id;      
    private String name;  
     // 省略getter setter方法 }
  • @Configuration 注解表示当前类是一个自定义配置类,并添加为Spring容器的组件,这里也可以使用@Componnet
  • @PropertySource("classpath:test.properties") 注解指定了自定义配置文件的位置和名称,此示例表示自定义配置文件为classpath类路径下的test.properties
  • @ConfigurationProperties(prefix="test") 注解将上述自定义配置文件test.properties 中以test开头的属性值注入到该配置类属性中
  • 如果配置类上使用的是@Componnet注解而非@Configuration 注解,那么@EnableConfigurationProperties 注解还可以省略

 

附:解决中文乱码

方法一:

@RequestMapping(produces="application/json;charset=utf-8")

方法二:

# 设置响应编码 utf-8
spring.http.encoding.force-response=true

 

posted on 2020-08-18 16:22  未知不知  阅读(127)  评论(0)    收藏  举报