spring bean创建细节


1) 对象创建:

单例/多例
    scope="singleton", 默认值,即默认是单例【service/dao/工具类】
   scope="prototype", 多例;【Action对象】

2) 什么时候创建?

  scope="prototype"  在用到对象的时候,才创建对象。
  scope="singleton"  在启动(容器初始化之前), 就已经创建了bean,且整个应用只有一个。

3)是否延迟创建

 lazy-init="false"  默认为false,  不延迟创建,即在启动时候就创建对象
 lazy-init="true"   延迟初始化, 在用到对象的时候才创建对象
  (lazy-init只对单例有效)       

4) 创建对象之后,初始化/销毁

 init-method="init_user"  【对应对象的init_user方法,在对象创建之后执行 】
  destroy-method="destroy_user"  

【在调用容器对象的destriy方法时候执行,(容器用实现类),scope="singleton" 时有效】


<?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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><bean id="userId" class="b_bean.User" scope="singleton" lazy-init="false"init-method="init_user" destroy-method="destroy_user"></bean></beans>      


package b_bean;public class User {private int id;private String name;public User() {System.out.println("User对象创建....");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void init_user(){System.out.println("init_user.....");}public void destroy_user(){System.out.println("destroy_user.....");}}

package b_bean;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class CreateBean {@Testpublic void test(){//ApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");//为了测试destroy-method,接口没有方法ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");System.out.println("ApplicationContext容器对象创建....");User user1=(User) context.getBean("userId");User user2=(User) context.getBean("userId");System.out.println(user1);System.out.println(user2);context.destroy();}
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发送邮件程序报错454 Authentication failed以及POP3和SMTP简介

一、发现问题 在测试邮件发送程序的时候&#xff0c;发送给自己的QQ邮箱&#xff0c;程序报错454 Authentication failed, please open smtp flag first。 二、解决问题 进入QQ邮箱——>设置——>账户——>POP3/IMAP/SMTP选择——>开启POP3/SMTP服务。 三、POP3和S…

MySQL数据库是非关系_MySQL(数据库)基础知识、关系型数据库yu非关系型数据库、连接认证...

什么是数据库&#xff1f;数据库(Database)&#xff1a;存储数据的仓库高效地存储和处理数据的介质(介质主要是两种&#xff1a;磁盘和内存)数据库系统&#xff1a;DBS(Database System)&#xff1a;是一种虚拟系统&#xff0c;将多种内容关联起来的称呼DBS DBMS DBDBMS&…

WPF 使用MahApps.Metro UI库

http://www.cnblogs.com/happyyftk/p/6904766.html 本文示例源码下载&#xff1a;MetroWPF 官方示例地址&#xff1a;http://mahapps.com/guides/quick-start.html 官方控件示例地址&#xff1a;http://mahapps.com/controls/ MahApps.Metro 项目源码&#xff1a;https://githu…

SpringIOC容器-创建对象

SpringIOC容器&#xff0c;是spring核心内容。功能&#xff1a;创建对象&#xff0c;处理对象的依赖关系 IOC容器创建对象&#xff1a; 创建对象, 有几种方式&#xff1a; 1&#xff09; 调用无参数构造器 2&#xff09; 带参数构造器 3&#xff09; 工厂创建对象 工厂类&…

java注释搞笑图案_搞笑的代码注释,那些有趣的程序员

发表于 2019-04-24 16:11:26 by 月小升搞笑/**** .::::.* .::::::::.* ::::::::::: F*CK YOU* ..:::::::::::* ::::::::::::* .::::::::::* ::::::::::::::..* ..::::::::::::.* ::::::::::::::::* ::::::::::::: .:::.* :::: ::::: .::::::::.* .:::: :::: .:::::::::::.* .::…

SpringIOC容器-对象依赖

1 概述 Spring中&#xff0c;如何给对象的属性赋值? 【DI, 依赖注入】 1) 通过构造函数 2) 通过set方法给属性注入值 3) p名称空间 4) 自动装配 5) 注解 1.1 通过构造函数 <!-- ###############对象属性赋值############### --><!-- 1) 通过构造函数 --><be…

f5长连接策略

但是把这些短连接汇聚到一起&#xff0c;集中F5的设备上&#xff0c;通过F5与服务器建立平滑的长连接&#xff0c;就解决了不断增大的并发连接。比如说前台有15万个并发连接&#xff0c;经过F5的优化&#xff0c;在服务器上只有不到5000个并发连接&#xff0c;而且在此过程中&a…

pdo-mysql_PHP: MySQL (PDO) - Manual

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(int)Если этот атрибут установлен в true вPDOStatement, MySQL-драйвербудет использовать буферизованные версии API MySQL.Если вы пишете пе…

Spring IOC容器【p名称空间注入属性值 】

# p 名称空间给对象的属性注入值(spring3.0以上版本才支持) 需要引入&#xff1a; xmlns:p"http://www.springframework.org/schema/p" 举例 applicationContext.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http…

Spring properties定义bean

2019独角兽企业重金招聘Python工程师标准>>> Spring提供了丰富的标签和注解来进行bean的定义&#xff0c;除此之外框架来提供了扩展机制让使用可以通过properties来定义bean&#xff0c;与强大的标签式和注解式的bean定义相比&#xff0c;properties提供的规则要简单…

Spring IOC容器-自动装配

1 autowire"byName" 根据名称自动装配&#xff0c;自动去IOC容器中找与属性名同名的引用的对象&#xff0c;并自动注入。 <!-- ###############自动装配############### --> <bean id"userDao" class"d_auto.UserDao"></bean&g…

linux下C++遍历文件夹下的全部文件;Windows/Linux下C++批量修改文件名,批量删除文件...

Linux下 C遍历目录下所有文件 1 rename(image_path.c_str(), image_path_new.c_str()); 2 remove(image_path_move.c_str()); 上述批量操作的代码是在linux下的参数设置&#xff1a; rename的参数&#xff0c;image_path为原文件的路径文件名&#xff0c;image_path_new为文件…

mongodb java 单例_Java单例MongoDB工具类

我经常对MongoDB进行一些基础操作&#xff0c;将这些常用操作合并到一个工具类中&#xff0c;方便自己开发使用。没用Spring Data、Morphia等框架是为了减少学习、维护成本&#xff0c;另外自己直接JDBC方式的话可以更灵活&#xff0c;为自己以后的积累留一个脚印。Java驱动版本…

Spring IOC容器-注解的方式

注解方式可以简化spring的IOC容器的配置&#xff0c;但不利于后期维护&#xff0c;对象之间的依赖关系不能像xml文件一样方便查阅&#xff0c;一目了然。 注解可以和XML配置一起使用。 使用注解步骤&#xff1a; 1&#xff09;先引入context名称空间 xmlns:context"htt…

前端请求进化之路--从form表单到JSONP

简单梳理前端请求的变迁史&#xff0c;着重对JSONP进行整理 请求演变 使用form表单提交请求&#xff0c;缺点是每次提交必定会刷新页面在1基础之上使用iframe进行局部刷新&#xff0c;用户体验得到一定优化动态创建图片提交请求 注意请求与返回内容类型须一致每次必须返回图片较…

Spring IOC容器-注解的方式【更简化】

----更加简化的版本 UserAction.java import javax.annotation.Resource;import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller;//Component("userAction") // 加入IOC容器//ComponentController // 控制层的组件…

hive安装mysql驱动_Hadoop-2.6.0为基础的Hive安装

Hive安装软件需求与环境说明假设已经搭建好 Hadoop-2.6.0 环境&#xff0c;并能正常运行mysql 安装软件服务端&#xff1a;MySQL-server-5.5.16-1.rhel5.x86_64.rpm客户端&#xff1a;MySQL-client-5.5.16-1.rhel5.x86_64.rpmhive安装软件&#xff1a;apache-hive-1.2.1-bin.ta…

视频通信原理——NAT介绍

一&#xff1a;为什么需要NAT由于IP地址随着互联网的发展而逐渐稀缺&#xff0c;难以使得每台主机都拥有一个公网上的IP地址&#xff0c;且并不是所有主机都需要一个公网上的地址&#xff0c;于是就有了NAT技术。NAT&#xff08;The IP Network Address Translator&#xff09;…

Oracle中执行存储过程call和exec区别

在sqlplus中这两种方法都可以使用&#xff1a; exec pro_name(参数1..); call pro_name(参数1..); 区别&#xff1a; 1. 但是exec是sqlplus命令&#xff0c;只能在sqlplus中使用&#xff1b;call为SQL命令&#xff0c;没有限制. 2. 存储过程没有参数时,exec可以直接跟过…

java和cnc_Java程序员的目标,你都达到了多少条?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼7.你需要学习Servlets&#xff0c;JSP&#xff0c;以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。8.你需要熟悉主流的网页框架&#xff0c;例如JSF&#xff0c;Struts&#xff0c;Tapestry&#xff0c;Cocoon&am…