浅谈spring容器中bean的初始化

 更新时间:2016年06月10日 16:42:20   投稿:jingxian  
下面小编就为大家带来一篇浅谈spring容器中bean的初始化。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

当我们在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的初始化就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 面试题和答案 - (下)

    Java 面试题和答案 - (下)

    本文主要介绍Java 面试题,这里整理了Java面试题关于JDBC,线程异常处理,Servlet,JSP的知识的整理,帮助大家理解知识点,便于面试,有兴趣的小伙伴可以参考下
    2016-09-09
  • Springboot 使用内置tomcat禁止不安全HTTP的方法

    Springboot 使用内置tomcat禁止不安全HTTP的方法

    这篇文章主要介绍了Springboot 使用内置tomcat禁止不安全HTTP的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java DOM4J 读取XML实例代码

    java DOM4J 读取XML实例代码

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得
    2013-09-09
  • Spring Boot实现跨域访问实现代码

    Spring Boot实现跨域访问实现代码

    本文通过实例代码给大家介绍了Spring Boot实现跨域访问的知识,然后在文中给大家介绍了spring boot 服务器端设置允许跨域访问 的方法,感兴趣的朋友一起看看吧
    2017-07-07
  • Spring数据库连接池url参数踩坑及解决

    Spring数据库连接池url参数踩坑及解决

    这篇文章主要介绍了Spring数据库连接池url参数踩坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • JNI实现Java调用C/C++代码详细代码示例

    JNI实现Java调用C/C++代码详细代码示例

    这篇文章主要介绍了JNI实现Java调用C/C++代码的相关资料,JNI是Java/Kotlin与C/C++语言之间的交互桥梁,用于调用C/C++代码以解决高性能问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • MyBatis Plus配置日志CRUD的使用详解

    MyBatis Plus配置日志CRUD的使用详解

    这篇文章主要介绍了MyBatis Plus配置日志,CRUD的使用,,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Spark SQL 编程初级实践详解

    Spark SQL 编程初级实践详解

    这篇文章主要为大家介绍了Spark SQL 编程初级实践详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 解决springboot读取application.properties中文乱码问题

    解决springboot读取application.properties中文乱码问题

    初用properties,读取java properties文件的时候如果value是中文,会出现乱码的问题,所以本文小编将给大家介绍如何解决springboot读取application.properties中文乱码问题,需要的朋友可以参考下
    2023-11-11
  • Spring Boot启动及退出加载项的方法

    Spring Boot启动及退出加载项的方法

    这篇文章主要介绍了Spring Boot启动及退出加载项的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论