我们知道,在spring中,会通过一个listener来来监听事件,
org.springframework.web.context.ContextLoadListener。
因为在webapp初始化之后,root web application context 就能够当做ServletContext作用于整个webapp,它能够被重新获得,通过spring中的方法,也就是说spring能够得到获得ServletContext,比如Servlet,Filter,JSP,
如下:
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(servletContext);
The core bean factory
spring有个作用就是防止大量的工厂和单例模式的出现,bean factory提供一个统一的借口来操作所有的bean,不管是粗劣的还是设计优良的,让所有的子系统意识不到spring的存在。
顶级接口beanfactory中的方法:
getBean(String name)
getBean(String name,Class requiredType)
containsBean(String name)
isSingleton(String name)
getAliases(String name)
调用getBean方法,默认是返回同一个示例,如果是prototype的bean ,就会返回不同的示例。其他方法,看文字就能知道意思了。
在各个beanfactory中,如果子系统没有找到需要的就会到parent beanfactory中去找,直到root factory,基于此,各个子接口可以提供各种各样丰富的拓展,比如说:
listablebeanFactory 支持列出所有factory中的bean的名字,借口如下:
int getBeanDefinitionCount();
String[] getBeanDefinitionNames();
String[] getBeanDefinitionNames(Class type);
boolean containsBeanDefinition(String name);
如果一个类所依赖的类,只有在runtime的时候才知道到底依赖谁,这个接口就可以用上。
beanfactory是一个中心,他把各种各样的应用都集成到spring中去,DAOs,business object,或者controllers,如果想独立出来用spring的话,spring发行了一个叫做 spring-core.jar的jar包能够嵌入到任何系统中去。
Resource resource = new ClassPathResource("style.xml");
ListableBeanfactoy bf = new XmlBeanFactory(resource);
他的一个可替代的方案:
ListableBeanfactoy bf = new DefaultListableBeanfactoy();
XmlbeanDefinitionReader reader = new XmlbeanDefinitionReader(bf);
Resource resource = new ClassPathResource("style.xml");
reader.loadBeanDefinitions(resource);
这就是spring bean factory 配置的灵活性,以上所有原则可以运用在任何场所。
To be continue........
分享到:
相关推荐
1. **不使用通配符**:当配置文件路径不包含通配符时,Spring会直接定位到指定的文件。例如: - 当配置文件直接放置在应用的bin目录下的conf文件夹内时,上述代码将加载该目录下的`application-context.xml`文件。...
1. **缓存注解**:Spring 提供了多种注解来实现缓存管理。其中,`@Cacheable` 用于标记一个方法,当方法被调用时,其返回值会被缓存起来,以便后续相同参数的调用可以直接从缓存中获取结果,减少数据库或远程服务的...
Spring框架是Java开发领域中最广泛使用的轻量级框架之一,其强大的功能和灵活性深受开发者喜爱。本文将深入探讨Spring框架的三个重要版本:Spring 3.1、3.2和3.3,揭示它们带来的新特性、改进和优化,帮助开发者更好...
本文将对Spring监听器进行深入浅析,包括其工作原理、源码解析以及如何使用。 首先,Spring监听器是基于事件驱动模型的,这种模式在多线程和分布式系统中非常常见。在Spring中,当一个特定的事件发生时,如bean的...
在本篇《Spring注解学习手札(四)持久层浅析》中,我们将深入探讨Spring框架在持久层的应用,特别是如何通过注解简化数据库操作。Spring作为一个强大的轻量级框架,提供了丰富的功能来处理数据访问,使得开发者可以...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是对传统Object-Oriented Programming(面向对象编程,OOP)的一种补充。在OOP中,为了实现共享行为,如日志、权限验证和事务管理,往往需要在多个类...
1. 从上面的使用场景看,可以在路径上使用通配符*进行模糊查找。例如:<param-value>classpath:applicationContext-*.xml 2. "/" 表示的是任意目录;"/applicationContext-*.xml" 表示任意目录下的以 ...
浅析Spring Security登录验证流程 Spring Security登录验证流程是Spring Security框架中最核心的部分之一,本文将详细介绍Spring Security登录验证流程的源码解析,通过源码讲解登录验证流程,具有很高的参考价值。...
深入浅析 Spring Security 缓存请求问题 Spring Security 是一个功能强大且灵活的安全框架,提供了许多功能来保护 Web 应用程序的安全。其中一个非常重要的功能是缓存请求问题的解决方案。在本文中,我们将深入浅析...
Spring Boot的`spring-boot-loader`模块是专门为了解决在Java应用程序中优雅地处理嵌套依赖JAR的问题而设计的。通常,Java的类加载器只能加载JAR内部当前目录下的类文件,但`spring-boot-loader`允许我们使用`java -...
深入浅析Spring Security 5中默认密码编码器 Spring Security 5中默认密码编码器是密码管理过程中的一项重要改进,引入了更安全的默认机制。对于Spring应用程序来说,升级到Spring Security 5可能会导致问题,因为...
1. **准备预处理(prepareRefresh())**: 在这一阶段,Spring容器会记录启动时间、标记容器为活动状态,并初始化上下文环境,例如文件路径信息。同时,它还会验证必要的属性是否已设置。 2. **获取新鲜的Bean工厂...
1. **核心部分增强**: - **DirectFieldAccessor**:允许直接访问对象的私有字段,提高了访问效率。 - **YAML配置**:Spring 4.1开始支持YAML格式的配置文件,提供了一种更易读的替代XML和Properties的方式。 - *...
Spring框架的核心特性之一是其依赖注入(Dependency Injection,简称DI),而这一特性的实现离不开Spring配置文件。配置文件是Spring容器的蓝图,它详细指定了如何创建、装配以及管理Bean。本文将深入探讨Spring配置...
1. **定义切面(Aspect)**:切面是包含横切关注点的模块,可以是一个类,其中包含了通知(Advice)、切入点表达式(Pointcut Expression)和通知类型(Before、After、Around等)。 2. **定义切入点(Pointcut)**...
Spring Cloud Netflix是一个强大的微服务工具集,它是Spring Cloud生态的一部分,专门为基于Spring Boot的应用提供了一套完整的服务治理方案。在微服务架构中,Spring Cloud Netflix提供了多种组件来解决分布式系统...
Mybatis和Spring的整合主要依赖于Mybatis-Spring这个库,它是Mybatis社区为了弥补Spring3在Mybatis3支持上的空白而开发的。这个库使得Mybatis与Spring的集成更加平滑,允许开发者充分利用两者的优点,实现数据访问层...
浅析@ReponseBody和@RequestBody注解 @ReponseBody和@RequestBody是Spring MVC框架中两个重要的注解,分别用于处理HTTP请求和响应体。下面我们将详细分析这两个注解的作用和Spring MVC内部是如何对他们进行解析的。...