SpringBoot核心【基本配置】

简介: 基本配置 1.入口类和相关注解 2.定制Banner 2.1 修改banner图标 2.2 关闭banner 3.SpringBoot的配置文件 3.1 tomcat端口号修改 3.2 常规属性配置 3.3 类型安全的配置


文章目录

   基本配置

       1.入口类和相关注解

       2.定制Banner

           2.1 修改banner图标

           2.2 关闭banner

       3.SpringBoot的配置文件

           3.1 tomcat端口号修改

           3.2 常规属性配置

           3.3 类型安全的配置

 前面两篇文章简单介绍了下SpringBoot及其构建的方式,本文开始介绍下SpringBoot中的一些核心内容。

基本配置

1.入口类和相关注解

 SpringBoot项目通常都有一个名为*Application的入口类,入口类中有一个main方法,这个main方法就是一个标准的java应用的入口方法,方法中使用"SpringApplication.run(…)",启动SpringBoot应用项目。

image.png

 在入口类中有一个注解"@SpringBootApplication",这是SpringBoot中的核心主键,它是一个组合组件,进入具体查看如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication 

 该组合注解中包括这三个:@SpringBootConfiguration ,@EnableAutoConfiguration ,@ComponentScan如果我们不使用@SpringBootApplication注解的话,我们可以分别使用这三个注解来实现。

image.png

 通过@SpringBootApplication的源码我们会发现SpringBoot会帮助我们完成很多的自动配置,但有些情况下我们并不需要SpringBoot帮助我们完成自动配置,这时我们可以通过@SpringBootApplication注解的exclude参数来设置,如下

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SpringbootHelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootHelloApplication.class, args);
    }
}

2.定制Banner

 通过入口类启动的时候在控制台我们可以看到一个banner图案,处于兴趣原因们想要改下这个也是可以的,具体如下:

2.1 修改banner图标

1.默认的banner如下

image.png

2.在src/main/resources下新建一个banner.txt文件

3.通过访问http://patorjk.com/software/taag 网站生成字符,如"bobo",然后将生成的字符复制到banner.txt中,

image.png

4.再次启动即可

image.png

2.2 关闭banner

 这个banner其实并没有什么作用,一般情况下我们会关点它,我们来看看如何关掉banner。 main方法中修改如下

public static void main(String[] args) {
    SpringApplication app = new SpringApplication(SpringbootHelloApplication.class);
    // 关闭banner
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
}

image.png

3.SpringBoot的配置文件

 SpringBoot使用一个全局的配置文件application.properties或application.yml,位于src/main/resources目录或者类路径/config下,推荐使用properties的方式配置。

image.png

3.1 tomcat端口号修改

 tomcat的端口号默认是8080,我们需要将之修改为8082,并将默认访问路径"/" 修改为"/springboot"

server.port=8082
server.servlet.context-path=/springboot

启动后浏览器访问即可:

image.png

3.2 常规属性配置

 前面介绍Spring的时候,我们想要注入properties中的值的时候我们需要通过@PropertySource指明properties文件的位置,然后通过@Value注入值,在SpringBoot中,我们只需要在application.properties定义属性,直接使用@Value注入即可。

1.application.properties增加属性

user.username=波波烤鸭
user.age=18
user.address=深圳

2.代码中获取

/**
 * @program: springboot-hello
 * @description: Hello 案例
 * @author: 波波烤鸭
 * @create: 2019-05-08 21:10
 */
@RestController
public class HelloController {
    @Value("${user.username}")
    private String name;
    @Value("${user.age}")
    private int age;
    @Value("${user.address}")
    private String address;
    @RequestMapping("/hello")
    public String hello(){
        return "Hello SpringBoot ... "+name+" "+age+" "+address;
    }
}

3.访问测试

image.png

4.中文乱码处理

内容是取到了,但是中文乱码,如何解决呢,继续往下看

在application.properties中添加如下设置

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

file – > setting – > Editor – > File Encodings – >然后按照如下图设置

image.png

再测试

image.png

搞定~

3.3 类型安全的配置

 上面将的属性配置在实际的开发过程中有点复杂,因为我们需要设置的属性太多了,这时我看可以使用类型安全的配置方式来实现,这样使用起来会更加方便,具体如下:

1.application.properties中配置

users.name=波波烤鸭
users.age=18
users.address=深圳

2.创建bean对象

 @ConfigurationProperties注解需要加入如下依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

不然会有错误提示,而且该注解的locations属性在2.x版本中已经移除了!!!

要解决参考此文:https://blog.csdn.net/baidu_19760977/article/details/71206108

/**
 * @program: springboot-hello
 * @description: 用户
 * @author: 波波烤鸭
 * @create: 2019-05-09 17:15
 */
@Component
@ConfigurationProperties(prefix = "users")
public class User {
    private String name;
    private String age;
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

3.业务代码

/**
 * @program: springboot-hello
 * @description: Hello 案例
 * @author: 波波烤鸭
 * @create: 2019-05-08 21:10
 */
@RestController
public class HelloController {
    @Autowired
    private User user;
    @RequestMapping("/hello")
    public String hello(){
        return "Hello SpringBoot ... "+user.getName()+" "+user.getAge()+" "+user.getAddress();
    }
}

4.测试

image.png

搞定~


相关文章
|
XML Java 测试技术
SpringBoot入门篇 01、Springboot入门及配置(二)
SpringBoot入门篇 01、Springboot入门及配置(二)
|
NoSQL 安全 Java
SpringBoot 自动配置的原理|学习笔记
快速学习 SpringBoot 自动配置的原理
170 0
SpringBoot 自动配置的原理|学习笔记
|
JSON NoSQL Java
Java--Redis-08-redis在SpringBoot中配置
在Spring Boot中,我们可以通过配置来自定义一个属于我们自己的RedisTemplate。
118 0
Java--Redis-08-redis在SpringBoot中配置
|
前端开发 Java Nacos
《SpringBoot系列三》:自定义配置时@Value和@ConfigurationProperties孰优孰劣?
《SpringBoot系列三》:自定义配置时@Value和@ConfigurationProperties孰优孰劣?
669 1
《SpringBoot系列三》:自定义配置时@Value和@ConfigurationProperties孰优孰劣?
|
Java 容器
SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定
`SpringBoot`在不断地版本迭代中陆续提供了不同的配置参数绑定的方式,我们可以单独获取`一个配置参数`也可以将`一系列的配置`映射绑定到`JavaBean`的属性字段,下面我们来看看这几种方式的配置绑定哪一种是你最常用到的。
SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定
|
XML JSON 开发框架
关于SpringBoot的自动配置和启动过程
关于SpringBoot的自动配置和启动过程
关于SpringBoot的自动配置和启动过程
|
存储 安全 网络协议
springboot 配置ssl 实现https访问
springboot 配置ssl 实现https访问
355 0
springboot 配置ssl 实现https访问
|
Java 应用服务中间件
springboot 中配置最大传输数据或上传文件的大小
springboot 中配置最大传输数据或上传文件的大小
springboot 中配置最大传输数据或上传文件的大小
|
缓存 搜索推荐 Java
《SpringBoot系列十五》源码+案例分析条件装配时多个Condition执行的顺序是什么样的?可以配置优先级吗?
《SpringBoot系列十五》源码+案例分析条件装配时多个Condition执行的顺序是什么样的?可以配置优先级吗?
202 0
《SpringBoot系列十五》源码+案例分析条件装配时多个Condition执行的顺序是什么样的?可以配置优先级吗?
|
运维 Java 数据库
《SpringBoot篇》03.超详细属性配置介绍
《SpringBoot篇》03.超详细属性配置介绍
157 0
《SpringBoot篇》03.超详细属性配置介绍