`
haokong
  • 浏览: 15036 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Bean实体类的创建与init-method的执行

阅读更多

    <bean id="classA" class="com.ClassA" init-method="init">
        <property name="propertyA" ref="propertyA"/>

   </bean>

    <bean id="classB" class="com.ClassB" >
        <property name="propertyB" ref="propertyB"/>

   </bean>

其中propertyB的关键字是static.

如果ClassA.init中直接引用了propertyB,则空指针异常。

问题原因是由于,spring会按照spring.xml中创建的bean的顺序来创建bean实体类,当某一个实体类有init-method时,加载引用的相关 bean,并创建相应的实体类。创建完毕后,执行init方法。执行完毕后,才能创建ClassB的实体类。

解决以上问题有两个解决方案,

方案1:

    <bean id="classB" class="com.ClassB" >
        <property name="propertyB" ref="propertyB"/>

   </bean>

    <bean id="classA" class="com.ClassA" init-method="init">
        <property name="propertyA" ref="propertyA"/>

   </bean>

方案2:

    <bean id="classA" class="com.ClassA" init-method="init" depends-on="classB">
        <property name="propertyA" ref="propertyA"/>

   </bean>

    <bean id="classB" class="com.ClassB" >
        <property name="propertyB" ref="propertyB"/>

   </bean>

 

 

分享到:
评论
2 楼 haokong 2010-10-22  
在开发中,不一定会让开发人员增加一个depends-on属性的。
具体问题还要具体分析。
问题出现的主要原因是由于‘开发或设计’方面的问题。
  > propertyB的关键字是static.
  > ClassA.init中直接引用了propertyB。

1 楼 野狼杰克 2010-10-21  
重点是depends-on

相关推荐

    Spring IOC Bean标签属性介绍(教学视频+源代码)

    Spring IOC Bean标签属性介绍 0.Bean标签属性介绍 1.0 新建一个Maven工程 1.1 pom.xml ...1.9 init-method和destroy-method 1.9.1 实体类JavaBean User加自定义的初始化方法和销毁方法 1.9.3 加了lazy

    Spring高级应用,Bean讲解

    Bean 的本质就是 Java 中的类,而 Spring 中的 Bean 其实就是对实体类的引用,来生产 Java 类对象,从而实现生产和管理 Bean。 Bean 的配置 Spring 容器支持两种格式的配置文件:Properties 文件和 XML 文件。在...

    Spring6_pdf版讲义.pdf

    - **初始化阶段**:Spring容器创建bean实例后调用`init-method`方法。 - **运行时阶段**:bean实例处于活动状态。 - **销毁阶段**:容器关闭时调用`destroy-method`方法。 ### 九、Bean的循环依赖问题 - **定义**:...

    spring2.5 学习笔记

    - `init-method` 和 `destroy-method` 不应与 `prototype` 作用域的 Bean 一起使用。 #### 第六课:Annotation 方式的 Spring - **注解介绍**: - **@Autowired**:自动注入 Bean。 - **@Qualifier**:当存在多...

    Spring系列面试题129道(附答案解析)

    或者,如果Bean指定了init-method方法,将调用这个方法。 - 如果存在BeanPostProcessor,会调用它的postProcessAfterInitialization方法。 - 当容器关闭时,如果Bean实现了DisposableBean接口,会调用destroy方法。...

    springmvcmybatis

    -- &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init="false"&gt; ${jdbc.driver}" /&gt; ${jdbc.url}" /&gt; ${jdbc.username}" /&gt; ${jdbc.password}" /&gt; ...

    Spring+Mybatis整合,并实现基础的增删改查

    4. **编写实体类、Mapper接口、Service接口及其实现类**: - 实体类:定义数据模型。 - Mapper接口:定义SQL映射。 - Service接口:定义业务逻辑。 - Service实现类:具体实现业务逻辑。 5. **创建JSP页面**: ...

    SPRING面试宝典

    - **init-method**:在Bean初始化完成后调用。 - **destroy-method**:在容器关闭前调用。 这些方法可以被覆盖,以便执行自定义的初始化或清理工作。 **3.9 什么是Spring中的内部Bean?** 内部Bean是指在另一个...

    spring框架配置bean的高级属性

    其中,`dataSource`引用了上面配置的数据源,`mappingResources`指定了实体类与数据库表之间的映射文件路径,`hibernateProperties`则定义了一系列Hibernate的配置参数,例如`hibernate.dialect`指定数据库方言,`...

    ssh基本配置过程,是struts2的

    使用MyEclipse工具自动生成实体类(POJO)和对应的Hibernate映射文件(`.hbm.xml`)。 3. **DAO接口和实现**: 编写DAO接口,定义数据库操作方法,然后创建实现类,实现这些方法。 4. **配置Spring**: 在`...

    结合Spring使用Mybatis Generator生成的代码

    MBG通过读取配置文件,可以生成与数据库表对应的Java实体类、Mapper接口以及Mapper XML文件。配置文件中包含了数据库连接信息、生成的目标目录以及需要处理的表信息等。例如: ```xml ``` 接下来,我们要将MBG...

    sm框架搭建

    │ ├── bean // 实体类 │ ├── buss // Service层 │ ├── dao // DAO层 │ └── controller // Controller层 ├── resources │ ├── mybatis_config.xml // MyBatis配置文件 │ ├── ...

    Java经典面试题

    Java编程语言在软件开发领域占据着重要地位...Entity Bean代表数据库中的实体,用于持久化数据。 了解这些Java面试知识点有助于开发者对语言特性和框架有深入理解,同时在面试中能够自信地回答问题,提高求职成功率。

    Spring入门

    - **示例**:定义一个Java实体类,并使用`JdbcTemplate`或Hibernate等技术实现对该实体的操作。 #### DAO支持 - **定义**:DAO(Data Access Object)模式是一种常见的持久层设计模式,用于封装对数据源的访问细节...

    用户中心的项目

    - **MyBatis配置**:通常通过XML文件来配置数据源、实体类和映射文件等信息。 - **动态SQL**:MyBatis支持动态SQL,可以根据不同的条件动态生成SQL语句。 #### 3. Druid连接池 - **Druid特性**:Druid提供了一整套...

    JAVA面试大全.doc

    - **Entity Bean**:代表数据库中的持久化实体,处理业务逻辑和数据存储。 - **Message Driven Bean**:处理消息队列中的消息。 8. **EJB组件和实现技术**: - EJB组件包括Session Beans、Entity Beans和Message...

    springmvc基础框架

    在SHI这个压缩包文件中,可能包含了Spring MVC和Hibernate的相关配置文件、实体类、DAO接口、Service接口和服务实现以及控制器类。通过对这些文件进行分析和学习,你可以深入了解Spring MVC和Hibernate如何协同工作...

Global site tag (gtag.js) - Google Analytics