一、初始化
// 1. 资源
Resource res = new ClassPathResource("beans.xml");
// 2. 初始化IOC容器
BeanFactory beanFactory = new XmlBeanFactory(res);
二、如何查看容器中的bean定义信息?
// 3. 转化为可枚举容器
ListableBeanFactory listableBeanFactory = null;
if (beanFactory instanceof ListableBeanFactory) {
listableBeanFactory = (ListableBeanFactory) beanFactory;
}
if (listableBeanFactory == null) {
throw new RuntimeException("listableBeanFactory is null.");
}
// 4. 转化为BeanDefinitionRegistry
BeanDefinitionRegistry beanDefinitionRegistry = null;
if (beanFactory instanceof BeanDefinitionRegistry) {
beanDefinitionRegistry = (BeanDefinitionRegistry) beanFactory;
}
if (beanDefinitionRegistry == null) {
throw new RuntimeException("listableBeanFactory is null.");
}
上面的示例代码中,ListableBeanFactory和BeanDefinitionRegistry两个接口单独说明一下
- ListableBeanFactory
这是接口的注释:
Extension of the BeanFactory interface to be implemented by bean
factories that can enumerate all their bean instances, rather than
attempting bean lookup by name one by one as requested by clients.
该接口继承自BeanFactory,同时该容器能枚举它的bean实例,客户端甚至可以通过名字来查找;
- BeanDefinitionRegistry
注释:
Interface for registries that hold bean definitions, for example
RootBeanDefinition and ChildBeanDefinition instances. Typically
implemented by BeanFactories that internally work with the
AbstractBeanDefinition hierarchy.
实现该接口,可以拿到注册到容器中的bean的定义信息,包括抽象的bean定义;
遍历容器中的bean
for (String name : listableBeanFactory.getBeanDefinitionNames()) {
// 对每一个bean的name,从BeanDefinitionRegistry中拿到BeanDefinition信息
BeanDefinition bd = beanDefinitionRegistry.getBeanDefinition(name);
System.out.println(name);
// 判断是否是抽象的bean
if (bd.isAbstract()) {
System.out.println("\tIt is a abstract bean.");
continue;
}
IBean bean = (IBean) beanFactory.getBean(name);
System.out.print("\t");
bean.doItNow();
}
分享到:
相关推荐
这样,当Struts2框架处理请求时,它会查找并使用Spring容器中的Action实例。 例如,一个简单的配置可能是这样的: ```xml <constant name="struts.objectFactory" value="spring"/> <constant name="struts....
8. **部署与运行**:讨论如何打包Spring Boot应用为可执行JAR或WAR文件,以及如何在Docker容器、云平台(如Heroku)上部署应用。 9. **微服务架构**:可能涉及如何使用Spring Cloud构建微服务,包括服务发现、配置...
首先,我们来看Spring Instrument Tomcat的核心功能。这个模块主要实现了`org.springframework.instrument.classloading`包下的接口,例如`LoadTimeWeaver`,它的作用是在类加载时进行代码修改或增强,这在AOP(面向...
从这些内容来看,spring-kafka整合官方文档提供了全面的信息,涵盖了从基础的Kafka配置和消息处理,到复杂的事务管理和错误处理机制,再到Kafka Streams的支持。它旨在帮助开发者利用Spring的强大功能,简化Kafka在...
接下来,我们来看一下"spring-framework-3.1.0.RELEASE-with-docs.zip",这可能是Spring框架的后续版本,带有文档,说明了Spring的发展和改进。虽然主要讨论的是3.0.5.RELEASE,但了解不同版本间的差异和新特性也是...
首先,我们来看看Spring框架的核心组件: 1. **spring-core.jar**:这是Spring框架的基础,包含核心工具类和资源处理能力。它提供了基本的DI功能,如Bean工厂和ApplicationContext。 2. **spring-beans.jar**:这...
Spring框架是Java开发中不可或缺的一部分,它为构建高效、可重用的Web应用程序提供了全面的解决方案。在Spring框架中,`spring-web`和`springs-webmvc`是两个重要的模块,它们分别扮演着不同的角色。 首先,我们来...
在Spring中,BeanFactory是Spring容器的基础,它是管理对象(bean)的核心接口。BeanFactory不仅负责实例化、配置、装配和管理bean,还提供了延迟加载功能,允许我们按需加载bean。工厂bean是一种特殊的bean,它们...
在 `spring-framework-4.2.0.RELEASE` 版本中,有以下重要的更新和改进: - **更好的类型安全**:4.2 版本引入了更多的类型安全改进,如使用 Java 8 的日期和时间 API,以及更强大的类型安全的 Bean 属性注入。 - ...
首先,我们来看标题中的"spring-framework-3.2.x-for-eclipse.rar",这表明提供的资源是Spring 3.2.x版本的源代码,且已经适配了Eclipse IDE。Eclipse是一款功能强大的开源集成开发环境,对于Java开发者来说,它提供...
现在我们来看看Spring框架的核心知识点: **Spring框架概述** Spring是一个开源的Java/Java EE全功能栈的应用开发框架。它的核心特性包括依赖注入(DI)和面向切面编程(AOP),这使得开发者可以编写松耦合、可测试...
Spring Core负责基础的IoC(Inversion of Control)容器,Spring Beans则实现了Bean的生命周期管理和配置,Spring Context则是基于Core之上构建的,提供了一个应用上下文,可以管理Bean并与其他Spring模块集成。...
2. 配置Spring:创建Spring的配置文件,如`mybatis-spring.xml`,定义SqlSessionFactoryBean,用于创建SqlSessionFactory,这是MyBatis的核心工厂类。 3. 数据源配置:配置数据源,Spring提供了多种数据源实现,如...
在Spring框架中,Objenesis主要用来解决某些情况下无法通过常规构造函数创建对象的问题,例如,当类的构造函数被私有化或者有复杂的初始化逻辑时。Objenesis可以跳过初始化过程,直接创建一个未初始化的对象,这对于...
Spring作为IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的容器,可以管理整个应用的bean,包括数据库操作相关的DAO层。MyBatis则专注于SQL映射,提供了将Java方法与SQL语句绑定的能力,避免了...
在源码分析中,我们可以学习到RocketMQ-Spring如何将RocketMQ的功能封装成Spring友好的API,以及它是如何与Spring容器交互,管理和初始化RocketMQ的实例。这对于理解和定制自己的RocketMQ客户端非常有帮助。 总的来...
根据提供的信息来看,这篇文档似乎涉及的是Spring框架2.5版本的中文API文档。下面将对文档中的几个关键部分进行解读,并围绕这些内容展开详细的知识点介绍。 ### 一、Spring框架简介 Spring是一个开源的Java平台...
接下来,让我们看看Spring的IoC容器有哪些优点: 1. **松耦合**:由于对象的创建和依赖关系的管理交给了IoC容器,对象与对象之间不再有硬编码的依赖,增强了系统的可维护性。 2. **可测试性**:IoC使我们能够轻松地...
首先,我们来看贡献指南CONTRIBUTING-DOCUMENTATION.adoc和CONTRIBUTING.md,这些文档详细地介绍了如何参与到Spring Framework的开发中来,包括代码提交规范、问题报告和代码审查流程,是了解项目开发流程和社区参与...
首先,我们来看看4.0.x系列的主要改进。Spring 4.0引入了对Java 8的支持,包括Lambda表达式、日期时间API等新特性的集成,使得开发者能够更好地利用这些新功能。此外,4.0.x版本提升了与WebSocket的集成,增强了Web...