注意:注入基本类型值在本质上就是依赖注入,而且是利用的set方式进行的依赖注入

1 注入基本类型的值

  <property name="基本类型的成员变量名" value="值"/>

2 注入集合类型的值(直接注入)

  2.1 注入list类型的值

             <property name="interest">
      <list>
        <value>钓鱼</value>
        <value>做饭</value>
        <value>看电视</value>
        <value>看电视</value>
      </list>
    </property>

注入list类型的配置文件格式

  2.2 注入set类型的值

 <property name="city">
<set>
<value>北京</value>
<value>长沙</value>
<value>武汉</value>
<value>武汉</value>
</set>
</property>

注入set类型的配置文件格式

  2.3 注入map类型的值

 <property name="score">
<map>
<entry key="英语" value="80"/>
<entry key="math" value="90"/>
</map>
</property>

注入map类型的配置文件格式

  2.4 注入properties类型的值

 <property name="db">
<props>
<prop key="username">King</prop>
<prop key="password">1234</prop>
</props>
</property>

注入properties类型的配置文件格式

3 注入集合类型的值(利用引用注入)

 <util:list id="interestBean">
<value>游泳</value>
<value>台球</value>
<value>编程</value>
</util:list>
<util:set id="cityBean">
<value>北京</value>
<value>长沙</value>
<value>南昌</value>
</util:set>
<util:map id="scoreBean">
<entry key="english" value="80"/>
<entry key="math" value="90"/>
</util:map>
<util:properties id="dbBean">
<prop key="username">Sally</prop>
<prop key="password">1234</prop>
</util:properties>
<!--
以引用的方式注入集合类型的值。
-->
<bean id="vb2" class="value.ValueBean">
<property name="interest"
ref="interestBean"/>
<property name="city"
ref="cityBean"/>
<property name="score"
ref="scoreBean"/>
<property name="db"
ref="dbBean"/>
</bean>

利用引用给集合类型注入值的配置文件格式

4 利用注解进行简化配置

  4.1 与类有关的4个注解

    @respository("id属性值")  -> 用于持久层

    @controller("id属性值")  -> 用于控制层
    @service("id属性值")  -> 用于服务层
    @component("id属性值")  -> 通吃

    注意:id属性值 一般是 类的首字母小写后的结果

  4.2 其他注解  

    @Scope("singleton") -->> 设置作用域
    @Lazy(true) -->> 设置延迟加载
    @PostConstruct -->> 设置初始化方法
    @PreDestroy -->> 设置销毁方法
    @Value("warrior") -->> 给成员变量注入值

5 使用spring表达式去读取其他bean的属性

 <bean id="sb1" class="value.SpelBean">
<property name="name"
value="#{vb1.name}"/>
<property name="interest"
value="#{vb1.interest[1]}"/>
<property name="score"
value="#{vb1.score['英语']}"/>
<property name="pageSize"
value="#{config['jdbc.pagesize']}"/>
</bean>

spring表达式

6 依赖注入

  6.1 @Autowired 和 @Qualifier("student")

    直接将这两行写到 注入变量上面就行啦;支持 set注入 和 构造器注入

  6.2 @Resource(name="student")  -->> 一般都用这个

    Resource 的包在 servlet-api.jar,所以需要配置一下运行环境;只支持 构造器注入

      Tomcat的运行环境自带了 servlet-api.jar 这个包,这个包里面就有使用Resource注解时需要的jar包

      如果运行环境不是Tomcat,那么就需要单独导入Resource注解需要的那个jar包,这个jar包是:javax.annotation-api

    

    图解:需要将B依赖注入到A中,在A中需要添加一个类型是B的成员变量,在该成员变量上面添加依赖注解@Resource(name="B的id")即可;不需要在A中为该成员变量实现set方法或者有参构造器(依赖注入的有参构造器),容器如果用到set方法或者有参构造器时它自己会想办法得到的,但是B中必须实现无参构造器,因为spring容器在创建实例时必须用到无参构造器。

7 使用了注解后必须在spring配置文件中配置注解扫描

  注解扫描

    容器会扫描指定包及其子包下面的所有的类,如果类前面添加了特定的注解(比如@Component),则容器会将这个类纳入容器进行管理(相当于配置了一个bean,其中,bean的id默认值等于首字母小写之后的类名)

  <context:component-scan base-package="annotation"/>

 

本博客源代码:点击前往

Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描的更多相关文章

  1. Spring专题2: DI,IOC 控制反转和依赖注入

    合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...

  2. Spring-Context的注解实现依赖注入功能

    使用Spring-Context的注解实现依赖注入功能. Demo要点: 本例子中主要使用Annotation功能来实现对MoviceService的注入.我们将Cinema.java的头部标注为@C ...

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

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

  4. Spring的控制反转(IOC)和依赖注入(DI)具体解释

    Spring的控制反转(IOC)和依赖注入(DI)具体解释 首先介绍下(IOC)控制反转: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制器就有应 ...

  5. Spring基于构造函数和设值函数的依赖注入

    基于构造函数的依赖注入 我们知道,bean标签中指定的类会进行初始化,这个初始化过程中自然会调用构造函数,那我们也可以利用这个构造函数完成依赖注入. 先创建一个类: public class Text ...

  6. Spring.Net快速入门:控制翻转、依赖注入、面向切面编程

    Spring.Net主要功能: 1.IoC:控制翻转(Inversion of Control)  理解成抽象工厂翻转控制:就是创建对象的权利由开发人员自己控制New,转到了由容器来控制. 2.DI: ...

  7. springMVC学习(注解实现依赖注入)

    原文:http://blog.csdn.net/mockingbirds/article/details/45399691 上一篇博客,学习了spring的依赖注入,即利用spring容器来为类中的属 ...

  8. 【半小时大话.net依赖注入】(下)详解AutoFac+实战Mvc、Api以及.NET Core的依赖注入

    系列目录 上|理论基础+实战控制台程序实现AutoFac注入 下|详解AutoFac+实战Mvc.Api以及.NET Core的依赖注入 前言 本来计划是五篇文章的,每章发个半小时随便翻翻就能懂,但是 ...

  9. Spring IoC(一)bean实例化和依赖注入

    1.IoC容器概述 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入. 所谓 IOC ,就 ...

  10. Spring 3.x企业应用开发实战(9-1)----依赖注入

    Spring中的依赖注入方式:属性注入.构造函数注入和工厂方式注入. 1.属性注入 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象. 属性注入要求Bean提供一个默认的构造函数,在J ...

随机推荐

  1. uva 10739 dp

    https://vjudge.net/problem/UVA-10739 和昨天的那个回文串几乎一样只是加了条件限制,可以随意增删以及替换. #include<iostream> #inc ...

  2. 【.Net】调用Web API的几种方式

    引言 记录一下调用Web API的几种方式,以调用百度API为例. HttpWebRequest HttpWebRequest位于System.Net命名空间,是常用的调用Web API类库. str ...

  3. 31 python下实现并发编程

    一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...

  4. LeetCode OJ:Symmetric Tree(对称的树)

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  5. CCControlSwitch 、CCControlSlider、CCControlButton

    /* *bool hasMoved(); 这里获取的不是开关是否正在被用户拨动,而是开关最终的状态是由用户手动拨动开关进行的, *还是用户点击开关进行的状态更改 */ CCControlSwitch* ...

  6. poj1325

    给出一系列任务,每个任务可以在机器A的某个模式,或者在机器B的某个模式下完成.机器A和B每切换一次模式需要重启一次.问完成这些任务,最少需要重启机器多少次? 把任务看作边 “重启”操作看作点 这道题就 ...

  7. hadoop碰到的 一个问题

    在里面添加/usr/local/hadoop/etc/hadoop/log4j.properties log4j.logger.org.apache.hadoop.util.NativeCodeLoa ...

  8. 1117. Eddington Number(25)

    British astronomer Eddington liked to ride a bike. It is said that in order to show off his skill, h ...

  9. java 简单实现socket

    server端 package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  10. Mxgraph使用总结二

    1 新建画板,画板相关操作 var container = document.getElementById("main"); //设置背景样式 container.style.ba ...