基于配置文件的Spring注入

1、依赖注入的概述

依赖注入指的是通过Spring配置文件的方式创建对象时,直接通过配置的方式将数据注入到该对象的标量类型属性,并从Spring容器中获取指定对象注入到该对象的引用属性中。依赖注入的方式有:

①set方法注入;               ②构造方法注入 ;               ③p标签注入。

2、<property>标签——set方法注入

①name属性:指定set方法实际名;      ② value属性:设置标量型数值;          ③ref属性:指定注入对象。

<bean name="now" class="java.util.Date"></bean>

<bean name="customerService" class="cn.gzsxt.service.CustomerService">

<property name="name" value="zhangsan"></property>

<property name="birthday" ref="now"></property>

</bean>

(注:使用系统生成的set方法,set方法实际名与其对应属性名相同)

3、<constructor-arg>标签——构造方法注入

①name属性:指定构造方法参数名;      ②index属性:指定对应参数的位置;

③value属性:设置标量型数值;             ④ref属性:指定注入对象。

<bean name="now" class="java.util.Date"></bean>

<bean name="customerService" class="cn.gzsxt.service.CustomerService">

<constructor-arg  name="name" value="zhangsan"></constructor-arg>

<constructor-arg name="age" value="15"></constructor-arg>

<constructor-arg index="2" ref="now"></constructor-arg>

</bean>

(注:使用<constructor-arg>标签注入,必须存在与注入参数完全匹配的构造方法)

4、p标签注入

引入p标签,以“p:[属性名]”和“p:[属性名]-ref ”作为<bean>标签的属性来注入数据。

<bean name="now" class="java.util.Date"></bean>

<bean name="customerService" class="cn.gzsxt.service.CustomerService" p:name="zhangsan" p:age="15" p:birthday-ref="now">

</bean>
 

5、注入集合数据

Spring对于注入数组、List、Set、Map、和Properties等结构的数据,分别提供了特定的标签来注入。

<!-- 数组类型 -->

<property name="arr01">
<array>
<value>A</value> <value>B</value> <value>C</value>
</array>
</property> <!-- Set类型 --> <property name="set02">
<set>
<value>D</value> <value>E</value> <value>F</value>
</set>
</property> <!-- List类型 --> <property name="list03">
<list>
<value>G</value> <value>H</value> <value>I</value>
</list>
</property> <!-- Map类型 --> <property name="map04">
<map>
<entry key="name" value="zhangsan"/>
<entry key="birthday" value-ref="now"></entry>
</map>
</property> <!-- Properties类型 --> <property name="props05">
<props>
<prop key="id">1</prop> <prop key="name">zhangsan</prop>
</props>
</property>
 

6、注入Properties文件的数据

Spring对Properties文件的支持,是基于opertySourcesPlaceholderConfigurer类实现的;通过Properties文件注入,必须指定其文件的路径。

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">

<property name="locations" value="classpath:sys.properties"></property>

<property name="fileEncoding" value="UTF-8"></property>

</bean>

<bean name="customerService" class="cn.gzsxt.service.CustomerService">

<property name="name" value="${customer.name}"></property>

<property name="age" value="${customer.age}"></property>

</bean>

(注:①加载Properties文件可以使用<context:property-placeholder file-encoding = "UTF-8" location = "classpath:sys.properties" />标签代替;②Properties文件默认编码格式为ISO-8859-1,需要设置为其他编码才支持中文)

———————————————————————————————————————————————————————————————————

The end   万有引力+

-

-

-

-

-

基于配置文件的Spring注入的更多相关文章

  1. Spring配置文件解析--依赖注入

    1.构造器注入基于构造器的DI通过调用带参数的构造器来实现,每个参数代表着一个依赖.此外,还可通过给stattic工厂方法传参数来构造bean.构造器参数解析根据参数类型进行匹配,如果bean的构造器 ...

  2. SSM-Spring-07:Spring基于注解的di注入

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 注解: 说起注解,哇哦,每个人都或多或少的用到过 像什么@Overried,@Test,@Param等等之前就 ...

  3. 07 Spring框架 依赖注入(四)基于注解的依赖注入

    前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Spring基于注解的依赖注入: 信息注入注解 @ ...

  4. Spring:基于注解的依赖注入的使用

    1.什么是pojo?什么是bean? 首先,在之前几篇Spring的介绍文章当中,自己都提到了一个名词叫做POJO类,但是在回顾Spring的注解的使用的时候,去形容java当中的对象还有一个名词是叫 ...

  5. Spring:基于配置文件的创建对象的各种方式

    在Spring3.0之前,Spring主要创建对象的方法是基于配置文件的,即在配置文件中为对象进行注册,并且可以在配置文件当中为对象的字段或者称之为属性值进行赋值,接下来首先介绍基于配置文件的创建对象 ...

  6. Spring AOP基于配置文件的面向方法的切面

    Spring AOP基于配置文件的面向方法的切面 Spring AOP根据执行的时间点可以分为around.before和after几种方式. around为方法前后均执行 before为方法前执行 ...

  7. Spring学习笔记--Spring配置文件和依赖注入

    Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...

  8. spring Quartz基于配置文件和注解的实现

    这里仅仅是做简单的记录怎样实现. 一.基于配置文件的实现 ①编写须要调度的类 package com.study; import org.springframework.scheduling.anno ...

  9. Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP

    基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...

随机推荐

  1. react-devtool 消息处理渲染 源码理解

    react-devtools 有chrome插件版,但在chrome 插件下的通信调试不够透明,且chrome 的插件特别是开发工具界面几乎无法调试. 看到了react-devtools 也提供ele ...

  2. 小白用阿里云搭载wordpress个人博客

    阿里云服务已经购买多时,却一直没时间部署内容,借着这次机会自己照着博客园园友的方式用wordpress搭建了个人博客! 创建wordpress的内容就不多说了,直接附链接来源:https://www. ...

  3. SQLServer 大小写敏感配置

    设置表内大小写敏感 ALTER TABLE 表名 ) COLLATE Chinese_PRC_CI_AS --不区分大小写 ALTER TABLE tb ) COLLATE Chinese_PRC_C ...

  4. Python从入坑到放弃!

    Python基础  python基础 python基础之 while 逻辑运算符 格式化输出等 python基础之 基本数据类型,str方法和for循环 python基础之 列表,元组,字典 pyth ...

  5. Linux命令行基础

    常用命令 命令 功能 pwd 打开当前所在的文件目录 ls 查看当前文件夹下的文件(不包括隐藏文件) ls -a 查看当前文件夹下的文件(包括隐藏文件) ls -al 查看当前文件夹下的文件(包括隐藏 ...

  6. H3C交换机配置命令(收集)

    1:配置登录用户,口令等 <H3C>                   //用户直行模式提示符,用户视图 <H3C>system-view        //进入配置视图 [ ...

  7. Mysql 版本号、存储引擎、索引查询

    [1]Mysql 版本号.存储引擎.索引查询 # 查看数据库版本号 SELECT VERSION(); # 查看数据库支持的引擎(默认即Support == DEFAULT行) SHOW ENGINE ...

  8. Linux Maven安装

    Maven 官网,下载maven 包 http://maven.apache.org/download.cgi 下载完成:apache-maven-3.6.1-bin.tar.gz 解压到自定义目录: ...

  9. 2018-2019-2 20175205实验一《Java开发环境的熟悉》实验报告

    2018-2019-20175205实验一<Java开发环境的熟悉>实验报告 实验步骤 (一)命令行下Java程序开发 在Linux下运行结果: 在IDEA中运行结果: (二)IDEA下J ...

  10. left join on +多条件与where区别

    left join on +多条件与where区别 重点 先匹配,再筛选where条件. 本文将通过几个例子说明两者的差别. 1. 单个条件 select * from product a left ...