SpringBoot SpringBoot 是什么
SpringBoot 是为了简化配置文件开发的一种解决方案
SpringBoot 遵从 规范大于配置
SpringBoot 内置传统 Spring 能够整合的所有框架的配置文件,所以项目可以独立运行,无需依赖外部的 Servlet 容器
SpringBoot 能干什么
内置了框架的配置文件,在进行框架整合的时候不需要写 或者 写很少的配置就能完成一个框架的整合功能
备注:SpringBOot 中的所有框架的配置文件都是通过 Java 代码来编写的
SpringBoot 开发模式的写法 ###
SpringBoot 如何实现自动配置(源码分析) 疑问:在 SpringBoot 启动的同时是否将 SpringBoot 内置的上百个框架都给配置了呢?
在 SpringBoot 启动的时候,他会去读取一个清单文件,清单文件中表明了所有的自动配置类
然后通过自动配置类中的 条件注解 进行判断当前配置是否 使能,若 使能,则配置,否则不配置;
使能的条件则是通过 条件注解 去判断
SpringBoot 的全局配置
全局参数使用场景:
1、整合数据库,配置数据库链接的四要素
2、整合 Redis,主机,端口,密码
3、整合 SpringMVC, 前端传递参数的格式
4、服务端口 .....
全局配置在创建项目时便默认在 resources 目录下 application.properties
eg:
# 给 SpringBoot 项目取个名字
spring.application.name=lgl
?
# 给服务设置端口
server.port=9999
?
# 设置 banner 的路径
spring.banner.location=classpath:banner.txt
?
# 设置 banner 图片
# 图片地址
spring.banner.image.location=classpath:banner.jpg
# 图片 宽 高
spring.banner.image.height=76
spring.banner.image.width=76
# 图片边幅
spring.banner.image.margin=2
# 图片反转
spring.banner.image.invert=true
?
# 给指定包设置日志级别
logging.level.org.itword.study=info
?
# 设置 SpringMVC 相关参数
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss.SSS
?
# Elasticsearch
spring.data.elasticsearch.cluster-name=elasticsearch
# Comma-separated list of cluster node addresses. If not specified, starts a client node.
spring.data.elasticsearch.cluster-nodes=
# Additional properties used to configure the client.
spring.data.elasticsearch.properties.*=
# Enable Elasticsearch repositories.
spring.data.elasticsearch.repositories.enabled=true
SpringBoot 中的 Starter POM 问题 Starter POM 是啥?
在 SpringBoot 中为了简化开发配置,需要导入使用场景,导入后就能够导入该场景下的所有包,以此实现自动配置SpringBoot 的使用场景有哪些?
文章图片
文章图片
文章图片
SpringBoot 中常规的 MVC 配置 拦截器配置
- 拦截器类
@Component
public class AuthenticationInterceptor implements HandlerInterceptor {
?
private final Logger logger = LoggerFactory.getLogger(AuthenticationInterceptor.class);
/**
* 用来拦截
* @param request
* @param response
* @param handler
* @return false 表示拦截,true 表示不拦截
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("----------------------接收请求,开始拦截----------------------");
return true;
}
?
}
- 添加拦截器
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
?
@Autowired
private AuthenticationInterceptor interceptor;
?
/**
* 添加拦截器
* @param registry
*/
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(interceptor);
super.addInterceptors(registry);
}
}
消息转换器配置
- 第一种方式
@Configuration
@ComponentScan(basePackages = "org.itword.study")
public class AppConfig {
?
/**
* 配置 SpringMVC 消息转换器
* 若配置类中没有配置该条件则使用场景内的默认配置;若配置类中存在该实体配置 bean ,则读取自定义配置 bean,场景内的默认 bean 就不生效
* @return
*/
@Bean
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
fastJson.setDefaultCharset(Charset.forName("UTF-8"));
return fastJson;
}
?
/**
* 如果返回的是字符串,则使用该消息转换器来配置
* @return
*/
@Bean
public StringHttpMessageConverter stringHttpMessageConverter (){
StringHttpMessageConverter stringJson = new StringHttpMessageConverter(Charset.defaultCharset());
return stringJson;
}
?
}
- 第二种方式
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
?
@Override
protected void configureMessageConverters(List> converters) {
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
fastJsonHttpMessageConverter.setDefaultCharset(Charset.forName("ISO-8859-1"));
?
StringHttpMessageConverter stringMessageConverter = new StringHttpMessageConverter();
stringMessageConverter.setDefaultCharset(Charset.forName("ISO-8859-1"));
?
converters.add(fastJsonHttpMessageConverter);
converters.add(stringMessageConverter);
?
super.configureMessageConverters(converters);
}
}
-
【SpringBoot|SpringBoot 开局篇】