SpringBoot 是为了简化配置文件开发的一种解决方案 SpringBoot 遵从 规范大于配置 SpringBoot 内置传统 Spring 能够整合的所有框架的配置文件,所以项目可以独立运行,无需依赖外部的 Servlet 容器
内置了框架的配置文件,在进行框架整合的时候不需要写 或者 写很少的配置就能完成一个框架的整合功能 备注:SpringBOot 中的所有框架的配置文件都是通过 Java 代码来编写的
###
疑问:在 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 中为了简化开发配置,需要导入使用场景,导入后就能够导入该场景下的所有包,以此实现自动配置
拦截器类
@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<HttpMessageConverter<?>> 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); } }