赞
踩
点赞、收藏、加关注
·
·
SpringBoot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手
核心注解是启动类上面的注解:@SpringBootApplication,主要组合包含了以下 3 个注解:
启动类上 @SpringBootApplication 注解整合了 @EnableAutoConfiguration 注解,该注解上有 @Import({AutoConfigurationImportSelector.class}) 注解,所以会读取 AutoConfigurationImportSelector 类,该类重写了 String[] selectImports 方法,最终会读取每个 starter 下面的 resources/META-INF/spring.factories 文件和 resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(高版本) 文件,然后根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context
使用:
失效解决:
大部分循环依赖spring自己就可以解决,spring有一个DefaultSingletonBeanRegistry对象,单实例对象注册器。里面有三个Map集合,也叫三级缓存,一级缓存存储完成单实例化的对象,二级缓存存储未完成实例化的对象(防止出现多例),三级缓存用来存储创建该对象的工厂(用来解决代理对象的问题)。但是构造方法注入产生循环依赖就需要自己手动解决,在形参前添加@Lazy注解延迟加载就可以解决
Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过 @ImportResource 注解可以引入一个 XML 配置
在项目的开发中,有些配置文件在开发、测试或者生产等不同环境中可能是不同的,例如数据库连接、redis 的配置等等。Spring 提供了 profiles 机制实现切换配置文件的功能。Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean,使用 spring.profiles.active 来指定哪个配置文件生效,值是 application-{profileName}.yml
原因: 由于浏览器的同源策略
使用 JSONP 解决:
通过 script 标签的 src 属性进行跨域请求,如果服务端要响应内容则首先读取请求参数 callback 的值,callback 是一个回调函数的名称,服务端读取 callback 的值后将响应内容通过调用 callback 函数的方式告诉请求方。如:<script src="http://跨域地址?callback=fun"></script>
,响应结果就是 fun(result)。只可以发送 GET 请求
添加响应头解决:
服务端在响应头添加 Access-Control-Allow-Origin: *
后端编码解决:
通过 nginx 代理跨域:
由于服务端之间没有跨域,浏览器通过 nginx 去访问跨域地址
全局异常处理可以用两个注解来实现:@ControllerAdvice + @ExceptionHandler
@Slf4j @ControllerAdvice public class GlobalExceptionAdvice { @ExceptionHandler({Exception.class})//捕获的全局异常类型 @ResponseBody public Object handleException(HttpServletRequest request, Exception e) throws Exception { log.error(e.getMessage(), e); // 如果某个自定义异常有@ResponseStatus注解,就继续抛出 if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) { throw e; } HashMap<String, Object> map = new HashMap<>(); map.put("message", "全局异常处理" + e.getMessage()); return map; } }
Spring:
SpringMVC:
SpringBoot:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。