SpringBoot|SpringBoot 开局篇

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|SpringBoot 开局篇
文章图片

SpringBoot|SpringBoot 开局篇
文章图片

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);
    }
    }


过滤器配置
消息转换器配置
  1. 第一种方式
    @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;
    }
    ?
    }


  2. 第二种方式
    @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 开局篇】

    推荐阅读