1.手动的依赖注入出了昨天所讲的利用<property>和<constructor-arg>标签设置注入外还可以通过属性值设置,这样就少些了一些代码。。。

1.1:直接在<bean>标签中打出c:或者p:,如果是IDEA就直接ALT+Enter会在<beans>中导入xmlns,当然手写也可以:

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"

  然后再在:后写上对应的(字段名="xx"或者c:_0,使用下标),例如,

<bean id="dataSource"
class="inject.namespace.MyDataSource" p:username="sa" c:url="url--" >

2.空值null的设置,Integer直接在=""中什么也不写就是null,但是时String类型就要使用标签<null>

3.parent属性:也就是引用另外一个<bean>,直接获取该<bean>中设置好的一系列注入。主要用处是:有多个同样属性的类时可以少写一些代码,可以位置防止这个工具<bean>被创建出实例,可以在其中加上属性abstract="true"。

3.1:为什么要防止被初始化:没什么别的原因,你愿意也可以。主要是<bean>必须要有class,如果被使用到了的话,就有可能会被初始化而已。

3.2:无论是parent还是abstract都是xml中的,和实际的java类没有关系,就像昨天的<set><list>和java中的类型无关,即使java不是Set,设置<set>后就会禁止重复值。

4. 自动装配,昨天的是手动依赖注入。使用一个在<bean>中的属性就行了:autowire,它一共有5个值可以设置,在这里只讲2个,分别是byType和byName.

4.1:byType,根据类型,也就是class属性。

4.2 :byName,这里的name是指类中的字段,但更准确来说的set方法后面的。(因为xx,其set方法可以写成setXy(xx),虽然这样不规范,但是name是指xy,spring中大部分都是反射这个set的,而不是直接取字段);然后注入就会寻找某个<bean>的id为该name的装配。

4.3:  有时候会出现多个<bean>有相同的类型而导致spring不知道自动装配哪个<bean>,因此可以通过2种属性设置,分别是primary,autowire-condidate,在不同的<bean>中分别设置这两个属相,primary="true"的优先级的大于autowire-condidate="true"的,但是对同一个<bean>同时设置这两个属性的值primary="true",autowire-condidate="false"会使另一个没有设置这两个任何一个值的,即最低优先级的<bean>被执行。但如果是primary="false",autowire-condidate="true",并且还有另一个相同类型的<bean>会导致报错,NoUniqueBeanDefinitionException。

4.3补充:可以在<beans>中设置默认属性,例子:其中第一个属性可以使用通配符(*是可以的,其他没试)

default-autowire-candidates="*dao" default-autowire="byType"

4.4:不会对Integer等类型进行自动装配,详见5.

5.自动装配的部分解释,对4的补充:自动装配是启动spring,spring就扫描了xml文件,spring就只道所有被它管理的bean,spring就可以通过反射获取其一系列信息。实例化就是调用构造函数,如果构造函数有依赖,spring就会尝试解决掉这个依赖是什么东西,从自己管理的<bean>中找。所以,当类型为Integer,Stirng之类,而不是类类型,由于spring没有管理,就不会自动装配。

6. 目前经过代码测试:发现即使类类型,但如果这个类里面有字段,就算在这个<bean>中配置了构造或者属性,自动装配的时候,字段的值它还是null。就是A类有字段B类,B类有字段A,即使在B的<bean> 中对A设置了值,但A的自动装配输出B的A是null。

学习spring的第三天的更多相关文章

  1. 深入浅出学习Spring框架(三):AOP 详解

    AOP的英文解释——AOPAspect Oriented Programming面向切面编程.主要目的是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. 在反 ...

  2. 深入学习Spring框架(三)- AOP面向切面

    1.什么是AOP? AOP为 Aspect Oriented Programming 的缩写,即面向切面编程, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术..AOP是OOP的延续, ...

  3. 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置

    在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...

  4. 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

    Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ cl ...

  5. 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比

    [原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...

  6. 菜鸟学习Spring——60s配置XML方法实现简单AOP

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

  7. 跟着刚哥学习Spring框架--创建HelloWorld项目(一)

    1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ...

  8. (转)Spring Boot 2 (三):Spring Boot 开源软件都有哪些?

    http://www.ityouknow.com/springboot/2018/03/05/spring-boot-open-source.html 2016年 Spring Boot 还没有被广泛 ...

  9. Spring Boot 2 (三):Spring Boot 2 相关开源软件

    Spring Boot 2 (三):Spring Boot 2 相关开源软件 一.awesome-spring-boot Spring Boot 中文索引,这是一个专门收集 Spring Boot 相 ...

随机推荐

  1. 【替代语法】PHP中冒号、endif、endwhile、endfor这些都是什么

    我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法,比如: <?php if(empty($GET_['a'])): ?><font color=" ...

  2. Day3-C-Radar Installation POJ1328

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

  3. 嵊州普及Day3T1

    题意:n座山,每天袭击k面,不能为同一座.问最少几天袭击所有山两面. 思路:不管如何,n,k<=10,做了就能过,考试时先想的暴力模拟,后来发现有规律,看看就好了. 见代码: #include& ...

  4. qrcode在手机上不显示的问题

    可以试试以下解决方案: 1.修改qrcode.min.js:里的function n()红线区域替换成这个 , 原因是这样子才能支持安卓机显示.

  5. UVALive 3231 网络流

    题目要求给m个任务分配给n个机器,但最后任务量最多的那个机器的任务量尽量少,利用最大流,在最后的汇点那里设置关卡,二分结果,把机器到最终汇点的容量设置为该值,这样就达到题目条件,这样跑最大流 还能把m ...

  6. JS实现全选,取消全选,正常选择

    //点击选择方法 onUserIdsChange(selVal) { if (this.form.groupUserIds.includes(-1) && !this.isSelect ...

  7. python-python基础2

    本章内容: 1.列表.元组 2.字典 3.集合 4.文件操作 5.字符编码与转码 一.列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 names= ...

  8. 网络OSI七层模型及各层作用 与 TCP/IP

    背景 虽然说以前学习计算机网络的时候,学过了,但为了更好地学习一些物联网协议(MQTT.CoAP.LWM2M.OPC),需要重新复习一下. OSI七层模型 七层模型,亦称OSI(Open System ...

  9. selenium 启动、窗口、获取标题

    1. from selenium import webdriver #启动chrom浏览器,没写executable_path,这是因为配置环境时,已经将chromdriver放到python安装文件 ...

  10. 2-10 就业课(2.0)-oozie:8、定时任务的执行

    4.5.oozie的任务调度,定时任务执行 在oozie当中,主要是通过Coordinator 来实现任务的定时调度,与我们的workflow类似的,Coordinator 这个模块也是主要通过xml ...