浅谈spring容器中bean的初始化_java

当我们在spring容器中添加一个bean时,如果没有指明它的scope属性,则默认是singleton,也就是单例的。

例如先声明一个bean:

public class People {
 private String name;
 private String sex;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 } 

}

在applicationContext.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"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

 <bean id="people" class="People" ></bean>

</beans>

然后通过spring容器来获取它:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class SpringTest { 

 public static void main(String[] args) {
  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
  People p1=(People) context.getBean("people");
  People p2=(People) context.getBean("people");
  System.out.println(p1);
  System.out.println(p2);
 } 

}

运行之后可以看出p1和p2输入的内容是一样的,说明spring中的bean是单例的。

如果不想要单例的bean,可以将scope的属性改为prototype

<bean id="people" class="People" scope="prototype" ></bean>

这样通过spring容器获取的bean就不是单例的了。

spring容器默认情况下在启动之后就自动为所有bean创建对象,若想要在我们获取bean时才创建的话,可以使用lazy-init属性

该属性有三个值defalut,true,false。默认是default,该值和false一样,都是spring容器启动时就创建bean对象,当指定为true时,

在我们获取bean时才创建对象。

以上这篇浅谈spring容器中bean的初始化就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索spring
初始化bean
spring 初始化bean、spring初始化bean顺序、springmvc初始化bean、spring注解初始化bean、spring初始化bean过程,以便于您获取更多的相关知识。

时间: 2024-08-22 14:30:32

浅谈spring容器中bean的初始化_java的相关文章

Spring容器中Bean的作用域

    当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例 prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例 request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次

singleton-spring容器中bean的作用域?

问题描述 spring容器中bean的作用域? 作用域的作用??求个通俗点的例子关于singleton和prototype区别 解决方案 spring管理bean作用域Spring中bean的作用域及Spring容器初始化的相关问题Spring中Bean的作用域和自动装配 解决方案二: prototype 是每次访问拿到一个实例,比如说new Date();这种方式 singleton 是全局共享一个实例,比如Calender.getInstance();这种方式 解决方案三: singleto

Spring在 IOC 容器中 Bean 之间的关系

一.在 Spring IOC 容器中 Bean 之间存在继承和依赖关系. 需要注意的是,这个继承和依赖指的是 bean 的配置之间的关系,而不是指实际意义上类与类之间的继承与依赖,它们不是一个概念. 二.Bean 之间的继承关系. 1.被继承的 ban 称为父 bean,继承这个父 bean 的 bean 称为子 bean.父 bean 可以通过指定 abstract 属性来声明为抽象的,子 bean 通过指定 parent 属性来指定父 bean 的引用. 2.子 bean 从父 bean 中

如何在jar包中使用到spring容器中的bean

问题描述 如何在jar包中使用到spring容器中的bean 这个jar包要使用到这个工程中的某个类,而这个类的配置是由spring管理,怎么在这个jar包中获取到这个bean 解决方案 http://my.oschina.net/zjds/blog/371962

Spring-Context之四:Spring容器及bean的定义

Spring框架的核心功能之一就是控制反转(Inversion of Control, IoC),也叫做依赖注入(dependency injection, DI).关于依赖注入的具体内容可以参见Martin Fowler写的一篇文章<Inversion of Control Containers and the Dependency Injection pattern>. Spring容器接口是BeanFactory,其提供了一些方法来配置和管理对象.ApplicationContext是B

浅谈MySQL存储过程中declare和set定义变量的区别_Mysql

在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解.  (1)先执行下面脚本,创建

用户体验设计:浅谈可用性测试中沟通的技巧

文章描述:如何快速解除用户防备?--浅谈可用性测试中沟通的技巧.   一般来说,在产品的设计和开发过程中,不同阶段会使用到不同的用户研究方法.比如,在产品正式发布之前,通常会进行可用性测试.可用性测试,是指让一群有代表性的用户尝试对产品进行典型操作,同时观察员和开发人员在一旁观察.聆听.记录.该产品可能是一个网站.软件,或其他任何产品,它可能已经做好,也可能尚未成型. 对于一个典型的可用行测试,我们可以:1. 通过观察用户在使用产品过程中出现的一些问题,发现产品的可用性问题2. 从测试参与者的表

浅谈网站SEO中避免pr高权重外链建设误区

做网站优化的站长需要经常要去发外链或者是交换友情链接,网站外链的数量和质量对网站的关键词排名有着非常重要的影响.我们去和别的网站交换友情链接,首先要考虑的就是对方网站是否和我们的网站门当户对.大家都喜欢高pr和高权重,认为权重高的网站自然能传递给我们网站不错的权重,从而提高我们网站的关键词排名.但事实上高pr和高权重并不一定会给我们网站带来好处,有时候还会影响搜索引擎对我们网站的印象. 网站优化中做外链最主要的就是把其他页面的权重传递给我们的网站,提高我们网站自身的权重,从而使关键词在搜索引擎中

浅谈SQL Server中的快照

原文:浅谈SQL Server中的快照 简介     数据库快照,正如其名称所示那样,是数据库在某一时间点的视图.是SQL Server在2005之后的版本引入的特性.快照的应用场景比较多,但快照设计最开始的目的是为了报表服务.比如我需要出2011的资产负债表,这需要数据保持在2011年12月31日零点时的状态,则利用快照可以实现这一点.快照还可以和镜像结合来达到读写分离的目的.下面我们来看什么是快照.   什么是快照     数据库快照是 SQL Server 数据库(源数据库)的只读静态视图