zoukankan      html  css  js  c++  java
  • 学习spring的第三天

    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。

  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Hadoop综合大作业
    hive基本操作与应用
    用mapreduce 处理气象数据集
    熟悉常用的HBase操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    获取全部校园新闻
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/11698683.html
Copyright © 2011-2022 走看看