![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 83
YOSHINO_Cream
这个作者很懒,什么都没留下…
展开
-
SpringMVC源码探究——SpringMVC的启动及容器初始化(注解方式)
servlet规范规定,在servlet启动时,要通过ServletContainerInitializer处理所有@HandlesTypes中标注的类,而ServletContainerInitializer是一个接口。而ServletContainerInitializer的实现类是Tomcat通过SPI机制加载的。1.SPI机制根据以上的知识,我们可以找到SpirngMVC实现了ServletContainerInitializer的类:SpringServletContainerIniti原创 2022-06-13 16:31:15 · 417 阅读 · 1 评论 -
Spring源码探究——Spring的AOP是如何实现的
前言&准备工作在之前的源码分析文章中,我们介绍了IoC的执行流程,在本篇文章中,我们来解析一些Spring的另一大功能——AOP。准备工作1.准备被切入的方法方法@Componentpublic class HelloService {public void sayHello(){ System.out.println("HELLO WORLD");}}2.准备切面@Aspect@Componentpublic class LogAspect { @Bef原创 2022-05-02 22:42:22 · 459 阅读 · 0 评论 -
Spring源码探究——以配置类启动方式来看IoC容器初始化流程
准备工作在之前的源码系列文章中,我介绍了Spring是如何从无到有帮我们创建并返回Bean的,之前文章是基于xml配置文件的方式进行解读了,这次我们来分析一下:Spring是如何通过配置类文件来初始化整个容器的。这个流程对我们分析AOP相关源码很有帮助。准备配置类@EnableAspectJAutoProxy@Configuration@ComponentScan(value = "com.core.aop")public class AopConfig {}准备测试方法原创 2022-04-24 21:40:39 · 723 阅读 · 0 评论 -
Spring源码探究——Spring如何帮我们创建Bean(下)
前言在上篇中,我们已经了解了Spring是如何读取我们配置的xml文件并把它转化为BeanDefinition对象并保存到容器中的。在BeanDefinition中保存了Bean的所有信息,有了它实例化Bean就变得轻而易举了。在本篇,我们会了解到Spring是如何根据BeanDefinition(以下简称bd)把bean实例化并返回给我们使用的。原创 2022-04-12 16:21:50 · 458 阅读 · 0 评论 -
Spring源码探究——Spring如何帮我们创建bean(上)
准备工作首先准备测试用的类,我们使用最简单的xml配置的方式来进行源码的探究1.准备Person类public class person { String name; int age; person() { } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age;原创 2022-04-09 22:40:56 · 826 阅读 · 0 评论 -
使用Spring与原生Servlet时遇到的问题——bean无法注入
背景这学期开设了javaweb与相关的实训课,实训课需要做一个web项目。为了体现web课的成果。我们小组本来打算采用Spring Ioc + Servlet +Mybatis来完成实训项目。今天真正搭建环境时却出了问题。问题在定义好了Dao层与Service层后,准备在web层调用Service层。当浏览器发出请求时,发生空指针异常排查1.首先直接引用dao层,仍发现空指针错误。说明从dao层开始就注入失败2.直接自动注入在Spring配置文件applicatio.原创 2021-12-28 22:41:44 · 537 阅读 · 1 评论 -
报错记录 SpringBoot项目部署到远程服务器时发生的问题
1.打包方式传统的web项目打包时都会打成war包,放在tomcat的webapp下即可进行访问。但今天我们将打包好的war包部署到服务器时,出现了项目无法访问的情况。经查资料后发现是打包方式的原因。SpringBoot本质是以启动java类的方式来启动项目,所以应该打包成jar包来进行部署。2.端口问题最开始项目部署在服务器上用的是服务器的6000端口,部署完成后发现只有360浏览器和IE浏览器等IE内核的浏览器能够访问。后来发现是6000端口本身被许多浏览器列为了不安全端口,所以无法进行原创 2021-12-22 23:06:57 · 1030 阅读 · 0 评论 -
SpringBoot整合原生Servlet,Filter,Listener&数据源
1.整合三大原生组件本质就是将我们以前在web.xml中配置的组件信息转移到配置类中,这里通过RegisterBean来实现。1.注册Servlet组件:首先创建一个Servletpublic class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException原创 2021-11-25 18:27:31 · 642 阅读 · 0 评论 -
2021-11-22 拦截器执行流程&Linux服务管理相关指令
1.拦截器执行流程1.准备一个拦截器2.在准备的html中输入账号密码并提交请求。我们知道在DispatcherServlet中,mv = ha.handle(processedRequest, response, mappedHandler.getHandler());是真正执行方法的语句,所以拦截器的pre方法必须在此之前执行。通过观察源码的方法命名我们不难猜测出applyPreHandle就是执行拦截器pre方法的语句。进入该方法boolean ...原创 2021-11-22 20:47:09 · 823 阅读 · 0 评论 -
浅析Spring视图解析器解析视图过程
首先准备一个测试方法 @PostMapping("/index") public String toIndex(User user, HttpSession session){ if(StringUtils.hasLength(user.getUsername())&&StringUtils.hasLength(user.getPassword())) { session.setAttribute("user",user)原创 2021-11-21 21:14:21 · 748 阅读 · 0 评论 -
浅析SpringMVC参数解析原理
s从昨天的文章我们知道了Spring是如何通过url映射到对应的方法,这篇文章来分析一下Spring如何解析我们所需要的参数。首先准备一个测试方法。 @RequestMapping("/article/{id}") @ResponseBody public String article(@PathVariable int id,@RequestHeader("host") String aname){ return id +"=============" + an原创 2021-11-20 18:45:55 · 1100 阅读 · 0 评论 -
2021-11-19学习记录 浅析SpringBoot环境下DispatcherServlet执行分发的过程
先准备测试需要的控制器类@Controllerpublic class HelloController { @RequestMapping("/hello") @ResponseBody public String hello(){ return "Hello Spring!"; }}来看DispatcherServlet的类结构:它继承了FrameworkServlet,我们都知道在浏览器上发出请求,最先到达的是Servlet的doGet原创 2021-11-19 18:15:40 · 665 阅读 · 0 评论 -
2021-11-18学习记录 浅谈@SpringBootApplication
通过昨天的学习知道了启动SpringBoot项目是通过启动一个被@SpringBootApplication表示的类的main方法来启动的,启动时会加载自动装配类,来装配我们导入依赖的相关组件。今天就来大致看一下@SpringBootApplication是如何做到这些的。@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( excludeFilters = {@Filter( type = Filter..原创 2021-11-18 18:33:02 · 428 阅读 · 0 评论