Spring基于xml文件配置Bean过程详解

这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

通过全类名来配置:

class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求bean中必须有一个无参的构造器。

  <bean id="helloWorld" class="com.gong.spring.beans.HelloWorld">
    <property name="name" value="jack"></property>
  </bean>

在springIOC容器读取Bean配置创建Bean的实例之前,需要对容器进行实例化。spring提供了两种类型的IOC容器实现:

Beanfactory:IOC容器的基本实现。

ApplicationContext:提供了更多高级特性,是BeanFactory的子接口。

ApplicationContext主要实现类:

  • ClassPathXmlApplicationContext:从类路径加载配置文件。
  • FileSystemXmlApplicationContext:从文件系统中加载配置文件。
  • ConfigureableApplicationContext扩展于ApplicationContext,新增两个方法refresh()和close(),让ApplicationContext具有启动、刷新和关闭上下文的能力。

ApplicaiotnContex在初始化时就上下文时就实例化所有单例的Bean。

WebApplicationContext是专门用于WEB应用的,它允许从相对于WEB根目录的路径中完成初始化工作。

依赖注入的三种方式

(1)属性注入:通过setter方法:<property name="name" value="jack"></property>,即在bean中存在setter方法。

(2)构造器注入:<constructor-arg value="" index="0" type=""></constructor-arg>,根据构造方法中初始化的参数进行一一设置,同时,可以根据参数的顺序index,参数的类型type来区分重载的构造器。

(3)工厂方法注入(很少使用,不推荐)

<bean id="student" class="com.gong.spring.beans.Student">    //第一种方式注入属性值
    <constructor-arg value="tom" index="0" type="java.lang.String"></constructor-arg>
    <constructor-arg value="12" index="1" type="int"></constructor-arg>    //第二种方式注入属性值
    <constructor-arg index="2" type="double">
      <value>99.00</value>
    </constructor-arg>
  </bean>
package com.gong.spring.beans;

public class Student {
  private String name;
  private int age;
  private double score;
  public Student(String name,int age,double score) {
    this.name = name;
    this.age = age;
    this.score = score;
  }
  @Override
  public String toString() {
    return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
  }

}
public static void main(String[] args) {
    //1.创建spring的IOC容器对象
    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    //2.从容器中获取Bean实例
    Student student = (Student) ctx.getBean("student");
    System.out.println(student.toString());
  }

输出:

当属性值有特殊符号时,要用以下方式:

    <constructor-arg index="0" type="java.lang.String">
      <value><![CDATA[<tom>]]></value>
    </constructor-arg>

用<![CDATA[属性值]]>。

(0)

相关推荐

  • web.xml中servlet, bean, filter, listenr 加载顺序_动力节点Java学院整理

    web.xml 文件中一般包括 servlet, spring, filter, listenr的配置.那么他们是按照一个什么顺序加载呢?加载顺序会影响对spring bean 的调用. 比如filter需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null:首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关. web.xml 中 listener 和 serverlet 的加载顺序为 先 listener

  • 详解Spring中使用xml配置bean的细节

    整理总结刚学的关于spring的xml配置bean的知识. 在ApplicationContext.xml文件中使用bean节点配置bean,bean的属性id在IOC容器中必须是唯一的. <bean id="helloWorld" class="com.test.spring.beans.HelloWorld"> <property name="name" value="Spring"></pr

  • Javabean基于xstream包实现转XML文档的方法

    本文实例讲述了Javabean基于xstream包实现转XML文档的方法.分享给大家供大家参考,具体如下: 1. 所需Jar包: xpp3_min.jar xstream.jar 本站下载地址. 把这两个jar所添加到项目中 2. 添加两个用于测试的javabean:Province和City class Province { private String name;// 省名 private List<City> cities = new ArrayList<City>(); p

  • Jaxb2实现JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档. Jaxb 2.0是JDK 1.6的组成部分.我们不需要下载第三方jar包 即可做到轻松转换.Jaxb2使用了JD

  • 使用JSP + JAVABEAN + XML 开发的一个例子

    本例子是参考了一些网站上有关JSP 对 XML 的操作的相关文档,又结合了一些个人的体会.例子涉及的内容是,开发的一个企业内部定餐系统后台管理端的部分代码,功能主要集中在对于餐馆基本信息的管理. 该例子本身开发的起因是我在原公司和同事们一个玩笑的一部分.特此也表达对那些一起共事的朋友们的想念. 例子本身是在TOMCAT4.01 平台下运行的B/S结构的程式.有关TOMCAT 的配置,这里不做说明.只讲解一下相关文件及文件夹的目录结构. 目录结构说明:/tomcat/webapps/canyin/

  • Spring装配Bean教程之XML安装配置bean详解

    前言 众所周知在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配置出现,XML不再是唯一选择,也不应该是首选,学习XML配置,更多用于维护已有的XML的配置.下面话不多说了,来一起看看详细的介绍吧. 创建XML配置规范 在使用XML配置前,需要创建一个新的配置规范,就像JavaConfig需要我们创建带有 @Configuration注解的类,而在

  • 解析Neatbeans(常见错误) build-impl.xml:305: Compile failed

    先贴一段build-impl.xml中javac部分构建失败提所在行的配置 复制代码 代码如下: <sequential>                <property location="${build.dir}/empty" name="empty.dir"/>                <mkdir dir="${empty.dir}"/>                <mkdir dir

  • Spring解密之XML解析与Bean注册示例详解

    为什么开始看spring的源码 半路转行写代码快一年半了,从开始工作就在使用spring框架,虽然会用,会搭框架,但是很多时候不懂背后的原理,比如:spring是怎样控制事务的,springmvc是怎样处理请求的,aop是如何实现的...这让人感觉非常不踏实,那就开始慢慢边看书边研究spring的源码吧!!! 怎样高效的看源码 我的答案是带着具体的问题去看源码,不然非常容易陷入源码细节中不能自拔,然后就晕了,最后你发现这看了半天看的是啥玩意啊. 引言 Spring是一个开源的设计层面框架,解决了

  • Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求bean中必须有一个无参的构造器. <bean id="helloWorld" class="com.gong.spring.beans.HelloWorld"> <property na

  • Spring AOP的概念与实现过程详解

    目录 Aop 实现aop方式一 实现aop方式二 注解实现aop Aop 什么是Aop? AOP就是面向切面编程,通过预编译方式以及运行期间的动态代理技术来实现程序的统一维护功能. 什么是切面,我理解的切面就是两个方法之间,两个对象之间,两个模块之间就是一个切面.假设在两个模块之间需要共同执行一系列操作,并且最后将这一系列操作注入到两个模块之间的指定位置.此时这一系列操作就是切面,注入这些操作的位置称之为切点. 举例:公司员工上班 A员工上班需要在前台进行打卡,同样的B员工…其他员工都需要在前台

  • 基于python实现雪花算法过程详解

    这篇文章主要介绍了基于python实现雪花算法过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Snowflake是Twitter提出来的一个算法,其目的是生成一个64bit的整数: 1bit:一般是符号位,不做处理 41bit:用来记录时间戳,这里可以记录69年,如果设置好起始时间比如今年是2018年,那么可以用到2089年,到时候怎么办?要是这个系统能用69年,我相信这个系统早都重构了好多次了. 10bit:10bit用来记录机器ID

  • Django加载配置的过程详解

    目录 一. Django服务启动 manage.py 二. 引入配置 三. 加载配置 一. Django服务启动 manage.py os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ui.settings") 设置配置文件环境变量- #!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.se

  • spring boot application properties配置实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: # =================================================================== # COMMON SPRING BOOT PROPERTIES # # This sample file is provided as a guideline. Do NOT copy it in its # entirety to your own application. ^^^ # ========

  • 基于Struts文件上传(FormFile)详解

    Struts中FormFile用于文件进行上传 1.在jsp文件中进行定义 <form action="/StrutsFileUpAndDown/register.do" method="post" enctype="multipart/form-data"> 名字:<input type="text" name="name" /> 头像:<input type="f

  • 基于js文件加载优化(详解)

    在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行. 所以,在这里,我们可以对其进行很多优化工作. 放置在BODY底部 为了让渲染引擎能够及早的将DOM树给渲染出来,我们需要将script放在body的底部,让页面尽早脱离白屏的现象,即会提早触发DOMContentLoaded事件. 但是由于在IOS Safari, Android browser以及IOS webview里面即使你把js脚本放到

  • spring boot Logging的配置以及使用详解

    前言:该篇文章基本上是翻译的官方文档! spring boot使用Commons Logging作为内部的日志系统,并且给Java Util Logging,Log4J2以及Logback都提供了默认的配置.如果使用了spring boot的Starters,那么默认会使用Logback用于记录日志. 一.Log format spring boot中默认的日志输出格式如下: 2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.ca

  • spring通过导入jar包和配置xml文件启动的步骤详解

    第一步,进到 spring仓库下载一个spring包,大家前往官网下载的时候,记得下载dist.zip后缀的包,里面包括了jar包和对应的英文文档. 下面是自己已经下载的一个,提供百度云链接: 百度云,提取码:hpst 第二步,打开idea -> File -> Project Structrure -> Libraries,点击上面的 "+"号,找到存放spring源码的目录,进入libs目录,然后将 beans.context.core.expression.jc

  • Java基于正则表达式实现xml文件的解析功能详解

    本文实例讲述了Java基于正则表达式实现xml文件的解析功能.分享给大家供大家参考,具体如下: 这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node对象.xml文档树上的每一个节点都能看做一个Node对象,它拥有title.attribute和text三个自身变量以及一个childrenNode集合用来存放子节点,使用正则表达式完整装载. 一.编写N

随机推荐