spring对bean的管理细节

spring对bean的管理细节

1. 创建bean的三种方式

1.1 方式一 使用默认构造函数创建

  在Spring的配置文件中使用bean标签, 配以id和class属性之后, 且没有其他属性和标签时

  采用的就是默认构造函数创建bean对象, 此时类中如果没有默认构造函数, 则对象无法创建

<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>

  instantiate 实例化

1.2 方式二 使用普通工厂中的方法创建对象 (使用某个类中的方法创建对象,并存入Spring容器)

  factory-bean   factory-method
<bean id="instanceFactory" class="com.itheima.factory.InstanceFactory"></bean>
<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"></bean>

1.3 方式三 使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器) 

<bean id="accountService" class="com.itheima.factory.StaticFactory" factory-method="getAccountService"></bean>
若一个类是存在于jar包中,我们无法通过修改源码的方式来提供默认构造函数,可使用方式二和三来创建对象

2. bean对象的作用范围

  Spring默认bean对象是单例的

    Bean的作用范围调整: bean标签的scope属性

    作用: 用于指定bean的作用范围

    取值:

      singleton   单例(默认值)

      prototype    多例的

      request   作用于Web应用的请求范围

      session   作用于Web应用的会话范围

      global-session   作用于集群环境的会话范围(全局会话范围),当不是集群环境时,它就是session

<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl" scope="prototype"></bean>

    

3. bean对象的生命周期

<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"
          scope="prototype" init-method="init" destroy-method="destroy"></bean>
init-method  bean初始化时执行的方法
destroy-method  bean销毁时执行的方法

  单例对象:

      出生: 当然容器创建时对象出生

      活着: 只要容器还在, 对象一直活着

      死亡: 容器销毁,对象消亡

    总结: 单例对象的生命周期和容器相同

  多例对象:

      出生: 当我们使用对象时Spring为我们创建

      活着: 对象只要是在使用过程中就一直活着

      死亡: 当对象长时间不用, 且没有别的对象引用时,由JAVA的垃圾回收器回收

      

手动关闭容器applicationcontext .close()

调用该方法时,核心容器对象不能使用ApplicationContext

ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");

原文地址:https://www.cnblogs.com/mkl7/p/10678514.html

时间: 2024-10-06 11:29:39

spring对bean的管理细节的相关文章

03 Spring对Bean的管理

Spring创建bean的三种方式 1.第一种方式:使用默认构造函数创建 bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche

IOC——Spring的bean的管理(注解方式)

注解(简单解释) 1.代码里面特殊标记,使用注解可以完成一定的功能 2.注解写法 @注解名称(属性名称=属性值) 3.注解使用在类上面,方法上面和属性上面 注意:注解方式不能完全替代配置文件方式 Spring注解开发准备工作 1.引入Jar包(Maven项目) pom文件 <dependencies> <!-- 引入一个spring-context 会自动依赖 spring-core.spring-beans.spring-expression 三个核心包 以及spring-aop.ao

spring的配置介绍和bean的管理方式

前言 不管说什么框架,我们总是难以逃脱该框架的配置文件,所以接下来我们就要讲述一下spring的配置文件的相关标签的配置,另外会介绍一下spring的bean的管理方式(XML文件中). spring的配置 id属性和name属性 id:给bean起个名字,在约束中采用 ID 的约束,唯一,必须以字母开始,可以使用字母.数字.连字符.下划线.句话.冒号,不能出现特殊字符. <bean id=”bookAction”> name:给bean起个名字,没有采用 ID 的约束.name出现特殊字符,

Spring(二)Bean入门

一.BeanFactory介绍 1.1.Bean: 在Spring技术中是基于组件的 最基本了是最常用的单元 其实实例保存在Spring的容器当中 Bean通常被定义在配置文件当中,Bean实例化由Spring的Ioc容器进行管理,Bean的实例可以通过Beanfactory进行访问,实际上大部分J2EE应用,Bean是通过ApplicationContext来访问的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory强大许多 1.2.BeanF

深究Spring中Bean的生命周期

一.Bean 的完整生命周期 在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了.一旦bean不再被使用,则由Java自动进行垃圾回收. 相比之下,Spring管理Bean的生命周期就复杂多了,正确理解Bean 的生命周期非常重要,因为Spring对Bean的管理可扩展性非常强,下面展示了一个Bean的构造过程 Bean 的生命周期 如上图所示,Bean 的生命周期还是比较复杂的,下面来对上图每一个步骤做文字描述:

【Spring】的【Bean】管理(注解)【四个相同功能的注解】

[Spring]的[Bean]管理(注解)[四个相同功能的注解] 注解:代码里面特殊的标记,使用注解也可以完成一些相关的功能. 注解写法:@注解名称(属性名称=属性值) 注解使用在类.方法.属性上面 (注解可以替代配置文件,并非完全替代): 1.创建类,创建方法 1 public class User { 2 public void add(){ 3 System.out.println("add-----------"); 4 } 5 } 2.创建spring配置文件,引入约束 1

Spring的Bean管理(注解管理)

Spring注解的IOC入门步骤: 步骤一:下载spring的开发包 http://repo.spring.io/webapp/search/artifact/?0&q=spring-framework 解压:(Spring目录结构:) * docs:API和开发规范. * libs:jar包和源码. * schema:约束. 步骤二:创建Web项目,引入spring开发jar包 核心jar包四个:bean/Core/Context/Expression Language 两个开发包 : log

【SSH三大框架】Spring基础第一篇:搭建Spring环境、实例化Bean、管理Bean的作用域以及Bean的生命周期

一.搭建Spring环境: 在lib目录下引入jar包,然后add to path,这就不过多说了. 二.实例化Bean的三种方式: 首先,我们先写两个java类: 接口类: public interface PersonService { public abstract void save(); } 实现类: public class PersonServiceBean implements PersonService { @Override public void save(){ Syste

Spring学习之路(三)bean注解管理AOP操作

在类上面.方法上面.属性上面添加注解:并用bean来管理: 书写方法:@注解名称(属性名称=值) 第一步:导入jar包 导入spring-aop.jar(spring注解包): 第二步:创建实体类(注解对象) package com.aop; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /** * value的值是自定义属性值 * @Co