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

1 注入基本类型的值

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

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

  2.1 注入list类型的值

1             <property name="interest">
2       <list>
3         <value>钓鱼</value>
4         <value>做饭</value>
5         <value>看电视</value>
6         <value>看电视</value>
7       </list>
8     </property>        

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

  2.2 注入set类型的值

1 <property name="city">
2     <set>
3         <value>北京</value>
4         <value>长沙</value>
5         <value>武汉</value>
6         <value>武汉</value>
7     </set>
8 </property>                

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

  2.3 注入map类型的值

1 <property name="score">
2     <map>
3         <entry key="英语" value="80"/>
4        <entry key="math" value="90"/>
5     </map>
6 </property>    

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

  2.4 注入properties类型的值

1 <property name="db">
2     <props>
3         <prop key="username">King</prop>
4         <prop key="password">1234</prop>
5     </props>
6 </property>

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

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

 1 <util:list id="interestBean">
 2         <value>游泳</value>
 3         <value>台球</value>
 4         <value>编程</value>
 5     </util:list>
 6     <util:set id="cityBean">
 7         <value>北京</value>
 8         <value>长沙</value>
 9         <value>南昌</value>
10     </util:set>
11     <util:map id="scoreBean">
12         <entry key="english" value="80"/>
13         <entry key="math" value="90"/>
14     </util:map>
15     <util:properties id="dbBean">
16         <prop key="username">Sally</prop>
17         <prop key="password">1234</prop>
18     </util:properties>
19     <!--
20         以引用的方式注入集合类型的值。
21      -->
22     <bean id="vb2" class="value.ValueBean">
23         <property name="interest"
24         ref="interestBean"/>
25         <property name="city"
26         ref="cityBean"/>
27         <property name="score"
28         ref="scoreBean"/>
29         <property name="db"
30         ref="dbBean"/>
31     </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的属性

 1 <bean id="sb1" class="value.SpelBean">
 2         <property name="name"
 3         value="#{vb1.name}"/>
 4         <property name="interest"
 5         value="#{vb1.interest[1]}"/>
 6         <property name="score"
 7         value="#{vb1.score['英语']}"/>
 8         <property name="pageSize"
 9         value="#{config['jdbc.pagesize']}"/>
10 </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"/>

 

本博客源代码:点击前往

转载于:https://www.cnblogs.com/NeverCtrl-C/p/6849953.html

Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描...相关推荐

  1. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)

    Spring是什么 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Orie ...

  2. Spring中的IoC(控制反转)和DI(依赖注入)

    一.Spring IoC的基本概念 控制反转(IoC) 是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心. 依赖注入(DI) 是IoC的另外一种说法,只是从不同的角度 ...

  3. Spring使用注解配置依赖注入

    大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单.不过类似于数据源对象这种配置信息容易变更的对象除外,这种对象使用xml文件来进行配置会更适合,方便于 ...

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

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

  5. 【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )

    文章目录 总结 一.Android 事件设置三要素 二.修饰注解的注解 三.Android 事件依赖注入步骤 总结 Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , ...

  6. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)注解开发

    Spring注解开发 Spring是轻代码重配置的框架,配置比较繁重,会影响开发效率.这个时候可以通过注解开发,注解代替xml配置文件可以简化配置,提高开发效率. Spring原始注解 注解分为原始注 ...

  7. Spring IoC和DI XML方式 注解方式 依赖注入 AOP面向切面

    初识Spring框架 时代变迁 原始时代我们用一个jsp搞定一切,但如此开发大型项目时我们遇到了问题,前端美化的代码和后端的代码交织,代码中又有html.js.css样式,又有业务逻辑和数据库访问代码 ...

  8. Wiring in Spring: @Autowired, @Resource and @Inject 三种注解实现依赖注入

    原文链接:Wiring in Spring: @Autowired, @Resource and @Inject 1. Overview 概述 In this Spring Framework tut ...

  9. Spring学习笔记1:IOC本质和依赖注入

    文章目录 1.IOC本质 1.1.拓展:关于Spring Boot 和 Spring Cloud 2.HelloSpring 3.IOC创建对象的方式 4.Spring配置 4.1.别名 4.2.Be ...

  10. Spring Boot2.x-05Spring Boot基础-使用注解完成依赖注入

    文章目录 概述 @Autowired注解 @Autowired的匹配原则 @Autowired的 required 属性 使用@Primary 和@Qualifier消除@Autowired的歧义 @ ...

最新文章

  1. logback logback.xml常用配置详解(三) filter
  2. 基于android os 5.1,Android 5.1.1版氢OS快速体验
  3. WEB服务器、应用程序服务器、HTTP服务器的区别
  4. [reference]-Features_in_A-profile
  5. 深度学习中多层全连接网络的梯度下降法及其变式
  6. JBU联合双边上采样
  7. 代码版本管理 GitLab介绍
  8. [Java] 蓝桥杯 BASIC-7 基础练习 特殊的数字
  9. 目标检测Anchor-free分支:基于关键点的目标检测(最新网络全面超越YOLOv3)
  10. Golang获取时间戳并增加一天
  11. python 高性能编程 AOT VS JIT
  12. 理解高阶函数,修炼编程内功
  13. 怎么做浪漫表白二维码?给喜欢的人制作一个二维码
  14. sangerbox平台使用(五)venn图的绘制
  15. WPF DataGrid 值转换 conver使用
  16. GMSL高带宽视频数据接入的方法
  17. 探索云原生技术之基石-Docker容器入门篇(3)
  18. React单页面图片瀑布流——Macy.js
  19. github验证邮箱问题
  20. 结对编程分析——中小学数学卷子自动生成程序

热门文章

  1. 服务器获取用户信息失败是什么原因,花粉俱乐部获取用户信息失败怎么解决?花粉俱乐部登录失败是什么原因?[多图]...
  2. jupyterlab中使用conda虚拟环境
  3. sql从某行开始获取数据
  4. 遥感数据免费获取网址
  5. vs C4996的错误解决方法
  6. linux如何查看vlan信息,dhcp – 通过tcpdump在数据包捕获(Linux)中未显示VLAN标记
  7. latex 可视化生成表格代码
  8. java并发编程(11)-- 线程池 拒绝策略
  9. kubernetes pod介绍
  10. linux 6.4 nfs配置,RHEL6.4 NFS文件共享服务器搭建