spring
文章平均质量分 76
scarletchow318
虽然前进得比别人慢,但至少还在坚持前进。
展开
-
【SSM】Spring3.0的纯注解开发
@Service(业务层)、@Controller(专指表现层)、@Repository(数据层),而@Component一般都可以指bean。Spring3.0升级了纯注解开发模式,用Java文件取代了配置文件,实现了快速开发。原创 2023-03-07 20:53:17 · 131 阅读 · 0 评论 -
【SSM】复习-【p1_Spring】Bean的实例化、生命周期及其控制
Bean本质上就是一个对象,通过(无参)构造方法创建bean,即bean的实例化。有3种方法。【生命周期】【阶段1】初始化容器:【1】创建对象(内存分配)👉【2】执行构造方法👉【3】执行属性注入(set操作)👉【4】执行bean初始化方法【阶段2】使用bean:执行业务操作【阶段3】销毁容器:执行bean销毁方法原创 2023-03-06 21:53:02 · 78 阅读 · 0 评论 -
【SSM】复习-【p1_Spring】IoC和DI、spring容器和bean(含service和dao、bean的别名/作用范围)
这样,就实现了前面说的【问题】“耦合度高”,通过【核心概念1】和【核心概念2】中提到的IoC和DI,实现了“充分耦合”的目标。(service标签中的dao的ref属性必须与dao的id一致)原创 2023-03-06 15:45:32 · 127 阅读 · 0 评论 -
【springboot】HTTPMessageConvertor源码分析原理
承接上一篇文章,还是按照之前的顺序来debug,先进入invokeAndHandle执行方法,可以看到this.returnValueHandlers是所有可以匹配的返回值处理器,通过supportsReturnType方法判断是否支持该类型的返回值后匹配到了目标的ReturnValueHandler,就可以执行它的handleReturnValue方法,也就是上篇文章中文末提到的处理返回值的方法handleReturnValue(),进入最内层的handleReturnValue方法。原创 2022-11-01 21:02:36 · 559 阅读 · 0 评论 -
【springboot】自定义Convertor原理(WebDataBinder对应的数据转换器)
上一篇文章中我们提到了WebDataBinder(Web数据绑定器)会将我们的请求参数的值绑定到指定的JavaBean中,原理就是WebDataBinde利用其中的Convertors(124个之多)将请求数据转换成指定的数据类型,再次封装到数据的JavaBean中。无法将String类型的属性(Pet在People中只是以字符串形式存在的)转化(convert)为Pet类型的属性->>无法将value处的属性值集赋给Pet类型的对象。缺乏一个需要自定义的类型转化器将value转给Pet。原创 2022-10-26 12:58:56 · 679 阅读 · 0 评论 -
【springboot】Servlet API参数解析(一)及Model、Map类型源码分析(二)及√自定义参数(POJO类型)(三)
这里的自定义参数解析指的是POJO类型的封装过程。POJO类的封装过程是由ServletModelAttributeMethodProcessor执行的。后面又由ModelAttributeMethodProcessor中的resolveArgument进行核心的执行流程。WebDataBinder(Web数据绑定器)的众多converters将请求参数的值绑定到指定的JavaBean(POJO类对象)中。原创 2022-10-23 11:20:31 · 327 阅读 · 0 评论 -
【springboot】请求处理-源码分析-各种参数类型解析原理
处理请求的参数解析:DispatcherServlet-doDispatch__handler__adapter__参数(注释)解析器__返回值处理器原创 2022-10-21 14:17:06 · 443 阅读 · 0 评论 -
【springboot/spring】请求处理源码分析-请求映射的原理
①springboot自动配置了RequestMappingHandlerMapping。②可以看到springboot是自动配置欢迎页的WelcomePageHandlerMapping。③也可以自定义HandlerMapping。原创 2022-10-20 11:12:12 · 283 阅读 · 0 评论 -
【springboot源码】自动配置
如果进行debug就会发现,向容器中注册的就是我们的包名,注意【AutoConfigurationPackages.PackageImports(metadata)).】getPackageNames()获取的是包名,这里默认为MainApplication(类名不一定是这个)所在的包下(com.boot)。这里有两个属性,都是数组,一个是basePackages={},包含需要自动配置的包;类上只有一条特别的注解,这里@Import引入了Registrar类,看下他是干嘛的。原创 2022-10-17 21:10:14 · 317 阅读 · 0 评论 -
【Spring】java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪
java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1378) at org.apache.catalina.loader.WebappClassLoaderBa.原创 2022-04-27 20:11:20 · 6027 阅读 · 0 评论 -
【Spring】事务控制
有两种事务控制的方法:编程式(硬编码,代码,API)vs 声明式(xml或注解)声明式的好处:事务管理不侵入开发的组件,更改只需要在定义文件中出现配置即可。业务逻辑对象不会意识到处在事务管理之中,事实上也该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分。而且不需要事务管理时可关闭,符合开闭原则。(解耦)Spring声明式事务控制底层就是aop。编程式事务控制3大对象: (关系)PlatformTransactionManager(操作事务行为)+TransactionDe.原创 2022-04-27 19:57:11 · 486 阅读 · 0 评论