Spring使用BeanFactory、ApplicationContext来管理bean的生命周期,有如下特点:
1)默认情况下,定义文件中的bean都是Singleton的,即每次通过getBean()方法返回的对象都是同一个对象,可以通过Bean的scope指定为prototype、或者将singleton指定为false,
使得每次调用getBean()方法时都产生一个新对象,如:
<beans...>
<bean id="hello" class="com.spring.bean.HelloBean" scope="prototype"/>
<bean id="greet" class="com.spring.bean.HelloBean" singleton="false"/>
</bean>
但需要注意的是,这里的singleton是针对一个Ioc容器维护一个bean对象,即一个BeanFactory或ApplicationContext对象只维护一个bean对象,而不是设计模式中谈论到的Singleton模式,那是指一个ClassLoader只载入一个对象。
2)使用BeanFactory时,Bean对象是在调用getBean()方法时才被实例化的;而使用ApplicationContext时,默认情况下,当ApplicationContext对象被初始化时,所有的Bean都会被实例化,如果想要Bean在getBean()方法被调用时才实例化,需要在<bean>标签中将lazy-init属性设置为true,如:
<bean id="date" class="java.util.Date" lazy-init="true"/>
3)Bean定义的继承。当应用中有多个对象拥有相同属性、且属性值在初始化时需要有相同的值,那么可以通过Bean定义的继承来减少配置,如:
<beans...>
<bean id="parent" abstract="true">
<property name="name" value="default"/>
<property name="id" value="0"/>
</bean>
<bean id="user" class="com.spring.User" parent="parent">
<property name="age" value="12"/>
</bean>
</beans>
通过abstract="true",将一个Bean定义为抽象Bean,这样BeanFactory或ApplicationContext就不会初始化它,然后在其它Bean中将parent属性指定为parent,表示这个Bean的name和id属性将继承至parent中。子类定义的同名属性将覆盖父类中的同名属性。
除了可以继承自抽象Bean,也可以继承自实例Bean,如:
<beans...>
<bean id="parent" class="com.spring.User">
<property name="name" value="default"/>
<property name="id" value="0"/>
</bean>
<bean id="user" class="com.spring.User" parent="parent">
<property name="age" value="12"/>
<property name="name" value="jojo"/>
</bean>
</beans>
分享到:
相关推荐
#### 实体Bean基本理论 实体Bean是EJB(Enterprise JavaBeans)框架中的一个重要组成部分,主要用于代表持久化的数据。简而言之,实体Bean是一种服务器端组件,用于封装存储在数据库或其他外部持久化存储介质中的...
总之,这个基于jsp+servlet+bean的Java Web购物网站项目,是一个很好的学习和实践平台,它涵盖了Web开发的基本技术,也涉及到了实际应用中的诸多细节。通过学习和分析这个项目,开发者能够提升自己的Java Web开发...
这些文件描述了Bean的角色、依赖关系和部署细节。 - **注解配置**:随着Java 5的发布,注解成为另一种配置方式,如`@ManagedBean`、`@SessionScoped`等,简化了配置过程。 4. **Java Bean 和Spring框架** - **...
- AbstractBeanDefinition作为抽象基类,实现了BeanMetadataElement接口,包含了基本的Bean定义信息,如类名、属性值、构造函数参数、依赖注入信息等。 - RootBeanDefinition用于存储根BeanDefinition,它包含了所有...
- `src`目录:源代码文件,开发者可以查看和学习Bean事件管理器的实现细节。 - `dist`目录:编译后的生产版本,可以直接在项目中引用。 - `README.md`:项目的说明文件,可能包含安装指南、使用示例和API文档。 - `...
### WebBeans:依赖注入与上下文状态管理 ...通过本文的介绍,我们不仅了解了WebBeans的基本概念和原理,还深入探讨了其实现细节和技术优势。希望本文能帮助你在未来的项目中更好地应用WebBeans技术。
在这个“EJB实体Bean学习”主题中,我们将深入探讨实体Bean的两大类型——BMP(Business Managed Persistence)和CMP(Container Managed Persistence),以及如何进行基本的CRUD(创建、读取、更新和删除)操作。...
标题中的“基础项目的架构代码”指的是一个项目的基本结构和组织方式,这通常包括了软件设计模式、模块划分、包管理以及各个组件之间的交互。在这个项目中,架构代码可能包含了MVC(模型-视图-控制器)或者三层架构...
1. **安装Tomcat服务器**:作为部署应用的基本环境。 2. **下载并安装Spring框架**:Spring框架提供了一个强大的容器来管理JavaBean。 3. **下载并安装Axis2**:用于发布WebService的服务端组件。 4. **配置Tomcat...
BeanFactory 是 Spring 容器的超级父接口,提供了基本的 Bean 生产和管理功能。ApplicationContext 是 BeanFactory 的子接口。 八、Spring IoC 容器的实现 Spring IoC 容器的实现是基于工厂模式、XML 解析和反射...
### Java Persistence ...JPA 通过使用批注来简化了实体 Bean 的配置和使用,使得开发者可以更专注于业务逻辑而非底层的数据库交互细节。通过对 JPA 批注的理解和合理运用,可以有效地提高应用程序的开发效率和维护性。
- **Bean**: Bean是由Spring容器初始化、装配及管理的对象,它们的定义及依赖关系由配置元数据描述。 - **Bean的定义**: Bean的定义通常包括类名、构造函数参数、依赖注入以及其他配置属性。 - **Bean的生命周期**: ...
- **EJB容器**:提供运行时环境,管理EJB组件的生命周期,处理安全、事务、并发、资源管理等底层细节。 - **EJB组件**:实现了业务逻辑的Java类,由容器管理和部署。 2. **EJB体系结构**: - **客户端接口**:...
总的来说,"jsp+bean的购物车"是一个基础的Java Web应用,通过JSP和JavaBean展示了如何实现一个基本的在线购物车功能。在实际的电商项目中,还需要结合其他技术,如Servlet、DAO(数据访问对象)、Service层、框架...
1. **EJB基础**:首先,了解EJB的基本概念,包括会话Bean和实体Bean的区别。实体Bean通常对应数据库表,而会话Bean用于处理业务逻辑。 2. **Jboss安装与配置**:详述Jboss服务器的下载、安装步骤,以及如何配置...
每个模块都是通过Spring的Bean管理,由MyBatis负责与数据库的交互,而JSP页面则负责展示和交互。例如,员工信息管理模块可能会有添加、修改、删除和查询员工信息的功能,这都需要通过Spring的Service层进行业务逻辑...
- `@MessageDriven`: 这是定义一个MDB的基本注解,它指明了bean的角色。你需要在类上添加这个注解,并指定消息驱动接口,例如`@MessageDriven(name = "MyMDB", activationConfig = { @ActivationConfigProperty...
总之,消息驱动Bean是Java EE中处理异步通信的强大工具,它简化了与JMS的集成,使开发者能专注于业务逻辑,而不必关心底层的消息传递细节。在Jboss这样的应用服务器上,利用MDB可以构建健壮、高效的企业级服务。
本系统采用Java技术栈,特别是JSP(JavaServer Pages)作为前端展示层,配合后台Java Bean进行业务逻辑处理,构建了一个简易但实用的图书管理平台。下面我们将深入探讨这个系统的实现细节。 首先,JSP是Java的一种...
通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录、学生信息和成绩管理功能,还通过分页技术增强了用户体验。更重要的是,这一整合展示了如何利用现代Java EE框架构建复杂企业级应用的...