一、pring的原理

1.1 IOC控制反转 ==> 扫描机制通过代理方式动态创建对象

扫描注解,通过反射获取类路径,动态创建对应类的对象,放置在对象池中(多线程做法,防止短时间内创建对象过多,耗尽内存)

注解作用相同;但为了区分三层架构,controller层的注解为@RestController和@Controller;service层的注解为@Service;dao层的注解为@Repository;其它的@Componet


1.2 aop面向切面思想 ==> 用于是否校验用户登录凭证、角色校验、权限校验(通过拦截器)

作用:对某一类对象进行监督和控制

注解接口类@interface

通过全局拦截器可以在执行该方法之前,进行拦截;通过获取方法上的注解(自定义注解,需要注解接口类)判断是否需要进行校验

面向切面思想:创建一个注解标记接口,通过反射获取方法/类上的注解来判断是否拦截,决定是否做校验


二、全局异常处理器

系统出现404、500等错误,这些异常会默认通过全局异常处理器@ControllerAdvice来处理异常(也可以进行自定义异常处理)

package cn.kooun.core.exception;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import cn.kooun.common.result.ResultUtils; /**
* 全局异常处理
* @author HuangJingNa
* @date 2019年12月21日 下午3:46:19
*
*/
@ControllerAdvice//标记此类为全局异常拦截器
public class GlobalExceptionHandler {
/**
* 系统异常处理,如404、500
* @author HuangJingNa
* @date 2019年12月21日 下午3:48:45
*
* @return
* @throws Exception
*/
@ExceptionHandler(value = Exception.class)//监听对应的异常对象
@ResponseBody
public Object defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception{
//控制台输出错误信息
e.printStackTrace();
// if(e instanceof ArithmeticException) {
// return ResultUtils.error("除数不能为0");
// }
return ResultUtils.error("系统繁忙~");
}
/**
* 其它异常/自定义异常
* @author HuangJingNa
* @date 2019年12月21日 下午3:54:32
*
* @param req
* @param e
* @return
* @throws Exception
*/
@ExceptionHandler(value = ArithmeticException.class)//监听对应的异常对象
@ResponseBody
public Object defaultArithmeticHandler(HttpServletRequest req, Exception e) throws Exception{
//控制台输出错误信息
e.printStackTrace();
return ResultUtils.error("除数不能为0");
}
}

spring的原理的更多相关文章

  1. Spring工作原理

    一. IoC(Inversion of control): 控制反转1.IoC:概念:控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系核心:bean工厂:在Sprin ...

  2. spring MVC原理

    spring MVC原理   Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt D ...

  3. 【Spring】Spring IOC原理及源码解析之scope=request、session

    一.容器 1. 容器 抛出一个议点:BeanFactory是IOC容器,而ApplicationContex则是Spring容器. 什么是容器?Collection和Container这两个单词都有存 ...

  4. spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例

    下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...

  5. Spring MVC 原理探秘 - 容器的创建过程

    1.简介 在上一篇文章中,我向大家介绍了 Spring MVC 是如何处理 HTTP 请求的.Spring MVC 可对外提供服务时,说明其已经处于了就绪状态.再次之前,Spring MVC 需要进行 ...

  6. 面试问烂的 Spring AOP 原理、SpringMVC 过程(求求你别问了)

    Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以.但今天笔者带大家一起深入浅出源码,看看他的原理.以期让印象更加深刻,面试的时候游刃有余. Sp ...

  7. Spring MVC 原理探秘 - 一个请求的旅行过程

    1.简介 在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章.为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一 ...

  8. Spring 注解原理(三)@Qualifier @Value

    Spring 注解原理(三)@Qualifier @Value Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.Aut ...

  9. Spring 注解原理(一)组件注册

    Spring 注解原理(一)组件注册 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 当我们需要使用 Spring 提供的 ...

  10. Spring工作原理与单例

    最近看到spring管理的bean为单例的,当它与web容器整合的时候始终搞不太清除,就网上搜索写资料, Tomcat与多线程, servlet是多线程执行的,多线程是容器提供的能力. servlet ...

随机推荐

  1. day03 Pyhton学习

    昨日回顾 1.while循环 语法 while 条件: 语句 else: 语句 执行语句:判断语句是否为真.如果真,执行循环,然后再次判断条件,如果不满足执行else语句. break 结束循环 co ...

  2. lumen发送邮件配置

    composer.json 增加 "illuminate/mail":"5.6"composer update -vvvconfig 目录新建mail.php ...

  3. Linux 发行版本简介

    1991年的10月5日Linus Benedict Torvalds在comp.os.minix 新闻组上发布消息,正式向外宣布他自行编写的完全自由免费的内核诞生(Freeminix-like ker ...

  4. 3. Distributional Reinforcement Learning with Quantile Regression

    C51算法理论上用Wasserstein度量衡量两个累积分布函数间的距离证明了价值分布的可行性,但在实际算法中用KL散度对离散支持的概率进行拟合,不能作用于累积分布函数,不能保证Bellman更新收敛 ...

  5. 500G Python从入门到进阶的视频资料

    第一部分:Python资源500G百度网盘学习视频300+本电子书需要的小伙伴可以叫小编的Q群867067945 点击展开,查看完整图片 回复关键字:学习第二部分:Python就业指导 更多更详细的就 ...

  6. 第12天 | 12天搞定Python,让excel飞起来

    学了10多天Python基础知识了,是时候来点硬货了,看过<第1天 | 12天搞定Python,告诉你有什么用?>的老铁都知道,Python可用的领域挺多的.只是我长期待在企业,所以只能说 ...

  7. 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 ...

  8. 线程池ScheduledThreadPool

    定时线程池 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle ...

  9. js 值类型与引用类型

    说明之前先提一个提问题,看一下你是怎么理解的 1. 值类型 简单的数据类型,存放在栈中 var num = 100; var num2 = num; num += 100; console.log(n ...

  10. MongoDB简介---MongoDB基础用法(一)

    Mongo MongoDB是一个基于分布式文件存储的数据库.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB 将数据存储为一 ...