Spring Boot入门

ComponentScan

Spring Boot框架会默认扫描启动类所在的包及其所有子包进行解析,但不会扫描平级的包,也不会自动实例化Bean,解决办法有一下两种:

  1. 为启动类的注解@SpringBootApplication加一个参数,告知系统需要额外扫描的包:
@SpringBootApplication(scanBasePackages={"fm.douban.app", "fm.douban.service"})
public class AppApplication {
  public static void main(String[] args) {
    SpringApplication.run(AppApplication.class, args);
  }
}
  • 参数名是:scanBasePackages;
  • 参数值是一个字符串数组需要把待扫描的包的前缀写入
  1. 如果不是Spring Boot 启动类,可以使用独立的注解@ComponentScan
@ComponentScan({"fm.service", "fm.app"})
public class SpringConfiguration {
  ... ...
}

Spring Boot Logger

因为在Spring这种比较复杂的系统中,sout打印出来的内容会输到什么地方是不确定的,所以使用日志来记录信息

日志系统的优势:

  • 日志系统可以轻松的控制日志是否输出
  • 日志系统可以灵活地配置日志的细节,如输出格式

1. 配置

修改Spring Boot系统的标准配置文件application.properties增加日志级别配置:
logging.level.root=info
表示所有日志都为info级别,也可以为不同的包定义不同的级别:

logging.level.包名=info

表示你的包和子包的所有类都输出info级别的日志

常用日志级别(优先级):
在这里插入图片描述

级别的作用

logging.level.root=error意味着不输出更低的优先级的日志,只输出ERROR日志
logging.level.root=warn意味着不输出更低的优先级的日志,只输出WARN日志及其更高优先级的日志,以此类推

开发阶段配置为DEBUG,在项目发布时调整为INFO或者更高级别,可做到不改代码而控制只输出关心的日志

2.编码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;

@RestController
public class SongListControl {
    private static final Logger LOG = LoggerFactory.getLogger(SongListControl.class);

    @PostConstruct
    public void init(){
        LOG.info("SongListControl 启动啦");
    }
}

先定义一个类变量LOG,然后在LOG.info()方法的参数中输入日志内容

这里的方法名与日志级别一一对应;
在这里插入图片描述

日志按级别输出

只有高级别和自身级别才有效

定义类变量LOG的语句是固定写法,只需要在不同的类中修改getLogger()参数为当前类名即可

Spring Boot Properties

配置文件格式

每一行是一条配置项:配置项名称 = 配置项值

logging.level.root=info
logging.level.fm.douban.app=info

书写配置文件是推荐遵守一下约定:

  • 配置项名称能准确表达作用,含义,以.分割单词
  • 相同的前缀配置项写在一起
  • 不同前缀的配置项之间空一行

配置的意义

主要作用:把可变的内容从代码中剥离出来,做到在不修改代码的情况下,方便修改这些可变或者常边的内容,这个过程称为避免硬编码,做到解耦

自定义配置项

可以在application.properties配置文件中加入自定义的配置项.

song.name=God is a girl

框架会自动加载并解析整个文件,使用它,则需要使用@Value注解即可:

import org.springframework.beans.factory.annotation.Value;

public class SongListControl {
    @Value("${song.name}")
    private String songName;
}

项目启动时Spring会自动把配置文件中的值赋给对象实例的变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-irony-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值