文章目录
1、Spring Boot ConponentScan
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AppApplication {
public static void main(String[] args) {
SpringApplication.run(AppApplication.class, args);
}
}
如该段代码,AppApplication.java
类就是启动类(有@SpringBootApplication
注解),Spring Boot 框架会默认扫描该类所在包及其子包。
若是要扫描其他包:
解决办法
为@SpringBootApplication
注解加参数
@SpringBootApplication(scanBasePackages={"fm.douban.app", "fm.douban.service"})
public class AppApplication {
public static void main(String[] args) {
SpringApplication.run(AppApplication.class, args);
}
}
这样就可以扫描fm.douban.app
,fm.douban.service
这两个包里的对象了。
如果不是Spring Boot
启动类,可以使用独立的注解@ComponentScan
@ComponentScan({"fm.service", "fm.app"})
public class SpringConfiguration {
... ...
}
2、Spring Boot Logger
日志系统的优势:
- 日志系统可以轻松控制日志是否输出。
- 日志系统可以灵活配置日志的输出细节。
使用日志系统步骤:
2.1、配置
修改 Spring Boot
系统标准文件:application.properties
(在项目的src/main/resource/
目录下),增加日志级别配置:
logging.level.root=info
表示所有日志(root
)都为info
级别。
也可以单独为不同的包配置不同的级别:
logging.level.fm.douban.app=info
表示fm.douban.app
及其子包中的所有类都输出```info````级别的日志。
常用的日志级别(优先级)如下:
优先级 | 级别 | 含义 |
---|---|---|
最高 | ERROR | 错误信息日志 |
高 | WARM | 暂时不出错但高风险的警告信息 |
中 | INFO | 一般的提示语、普通数据等不紧要的信息日志 |
低 | DEBUG | 开发阶段需要关注的调试信息日志 |
级别的作用
不输出配置级别低的日志信息。
logging.level.root=error
意味着不输出比 ERROR 更低级的 WARM、INFO、DEBUG 日志信息
2.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 启动啦");
}
}
级别 | 方法名 |
---|---|
ERROR | error() |
WARN | warn() |
INFO | info() |
DEBUG | debug() |
3、Spring Boot Properties
application.properties
是一个固定位置(src/main/resources/
)、固定名字的文件,框架会自动加载并解析这个配置文件。
3.1、配置文件的格式
配置项名称=配置项值
logging.level.root=info
logging.level.fm.douban.app=info
- 用
.
分隔单词 - 相同前缀的配置项写在一起
- 不同前缀的配置项空一行
3.2、配置的意义
配置的主要作用,是把可变的内容从代码中剥离出来,做到在不修改代码的情况下,方便修改这些可变的或常变的内容。做到解耦,避免硬编程。
3.3、自定义配置项
可以在配置文件中加入自定义的配置项
song.name=batianhan
框架会自动加载并解析整个文件。
使用该配置项:
import org.springframework.beans.factory.annotation.Value;
public class SongListControl {
@Value("${song.name}")
private String songName;
}
这样,就把song.name
的值赋给了songName
。