随笔分类 - Spring & SpringMVC
摘要:① 导入依赖 <!--start > Test Dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.ve
阅读全文
摘要:Spring的七大模块 Spring功能日益强大,不断的版本更新中整合进各种技术,几乎成了企业级开发的御用框架,从开发手册来看,包含了以下七大模块: Core模块是框架的最基础部分,并提供依赖注入(Dependency Injection)管理Bean容器功能。 Context模块构建于Core包上
阅读全文
摘要:@RequestMapping注解是Spring MVC中最常用的一个注解,有必要掌握每一个属性。 value属性 由于value属性是@RequestMapping注释的默认属性,因此如果只有唯一的属性,则可以省略该属性名,如果有超过一个属性,则必须写上value属性名称。 value属性支持通配
阅读全文
摘要:要想成为 Spring 的 bean,我们通常会在类上添加注解 @Component、@Controller、@Service、@Repository 等注解。并且 Spring 从 4.x 版本开始 Spring 开始支持条件注解 @Conditional,满足条件的类才会注册为 Spring 的
阅读全文
摘要:Spring 事件处理基于 Java 观察者模式扩展。Spring 应用上下文中发布了各种事件,此外 Spring 还允许我们发送和处理自定义的事件,本篇将对 Spring 的事件机制使用及其实现进行详细介绍。 观察者模式 观察者模式作为设计模式的一种,当被观察者的状态发生变化,所有观察者都将得到通
阅读全文
摘要:泛型自 Java 5 诞生,为了支持泛型,Java 5 新增了 Type 类,表示 Java 中的某一种类型,反射包中提供的获取泛型类型的方法中多是返回 Type 类型,使用时需要进行强制类型转换,为了简化对泛型信息的获取,Spring 4 开始提供了一个 ResolvableType,本篇将详细对
阅读全文
摘要:什么是循环依赖? 如果对象A使用到了对象B,那么我们就说对象A依赖对象B。如果对象A依赖对象B的同时,对象B也依赖对象A,我们就说对象A和对象B产生了循环依赖。 Spring 如何处理循环依赖 Spring bean 的生命周期包含了元数据解析、实例化、初始化、销毁等阶段,而 Spring bean
阅读全文
摘要:Spring支持注入单一类型和集合类型的依赖,对于单一类型,如果按照类型进行注入,容器中存在多个相同类型的bean时,Spring将抛出 NoUniqueBeanDefinitionException 异常。对于这种情况,我们可以选择将某一个 bean 设置为 primary,然而如果存在多个 pr
阅读全文
摘要:在Spring中@Autowired 和 @Resource 的区别 一文中,我们有提到,Spring 在依赖注入时会先将 @Autowired 注解以及 @Resource 注解标注的对象解析为依赖描述符 DependencyDescriptor,然后调用AutowireCapableBeanFa
阅读全文
摘要:普通的 Java Web 项目中,我们经常使用 HttpServletRequest 获取请求参数,请求头等信息。 到了 Spring MVC 项目,我们通常会使用 Spring 提供的注解获取参数,如 @RequestParam、@RequestHeader。 不过在某些场景下,我们可能还是想获取
阅读全文
摘要:基于注解的 Spring MVC 的项目中,Controller 应该是我们接触最多的类了,这里提到的 Controller 并非是某一个具体的接口或类,而是一种概念,只要我们定义的类中包含了处理请求的方法,这个类就可以称为 Controller,而处理请求的方法被称为处理器方法。 由于 Contr
阅读全文
摘要:跨源资源共享(CORS) 即 Cross-Origin Resource Sharing,也常被译为跨域资源共享。作为 W3C 的标准,它允许浏览器向跨源服务器发起请求,克服了 AJAX 只能同源使用的限制。 CORS 需要浏览器和服务器同时支持,浏览器发起跨域请求时会自动携带一些请求头,服务器如果
阅读全文
摘要:HTTP作为一种无状态的协议采用的是请求-应答的模式,每当客户端发起的请求到达服务器,Servlet 容器通常会为每个请求使用一个线程来处理。为了避免线程创建和销毁的资源消耗,一般会采用线程池,而线程池中的线程数量是有限的,当线程池中的线程被全部使用,客户端只能等待有空闲线程处理请求。 实际场景中,
阅读全文
摘要:Filter简介 过滤器 Filter 在 Servlet 2.3 版本中被首次提出,唯一的作用就是过滤,它不仅可以过滤请求,还可以过滤响应,当请求到达 Servlet 容器,会先经过 Filter ,然后再交给 Servlet,之后 Filter 还可以对 Servlet 的响应进一步处理。并且多
阅读全文
摘要:异常处理是几乎所有编程语言都具有的特性,主要是处理程序运行时的非预期行为,保证程序的健壮性。JVM 运行时如果遇到未经处理的异常线程将意外退出,为了避免这种情况需要为线程设置默认的异常处理器。 为了将异常处理与 Web 环境整合到一起,Servlet 规范也定义了一系列异常处理的内容。Spring
阅读全文
摘要:Sping MVC 正式的名字为 Spring Web MVC,是 Spring Framework 框架中的其中一个模块,基于 Servlet API 构建,同时使用 MVC 的架构模式,主要用以简化传统的 Servlet + JSP 进行 web 开发的工作。 MVC架构模式 Spring MV
阅读全文
摘要:静态资源,可以理解为内容固定的页面,包括 HTML、CSS、JS、图片文件等等。浏览器发起请求后服务器根据 URL 查找文件,并将文件内容作为响应,而无需 Java 代码处理业务逻辑,访问效率较高。 前后端分离的今天,Java Web 应用中直接使用静态资源的方式已经很少见了,但不可避免有时候还会用
阅读全文
摘要:@Autowired 和 @Resource 的区别 区别一:所属不同。 @Autowired 是 spring-beans 模块提供的注解。 @Resource 是 JSR 250 规范提出的注解,由 JDK 自带。 区别二:装配方式不同。两者都可以标注在属性或 setter 方法上。 @Auto
阅读全文
摘要:依赖查找和依赖注入是 Spring 实现 IoC 容器提供的两大特性,相对于依赖查找,Spring 更推崇的是使用依赖注入。 依赖注入方式 如果在 A 类中使用到了 B 类的实例,那么我们就说 A 依赖 B。依赖的位置包括字段、构造器方法参数、普通方法参数等,Spring 都对其进行了支持。Spri
阅读全文
摘要:Spring 为什么引入资源管理? Java 中有各种各样的资源,资源的位置包括本地文件系统、网络、类路径等,资源的形式可以包括文件、二进制流、字节流等,针对不同的资源又有不同的加载形式。本地文件系统中的文件在 Java 中使用 File 表示,使用 FileInputStream 读取。网络上的资
阅读全文