博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring基础
阅读量:5977 次
发布时间:2019-06-20

本文共 2964 字,大约阅读时间需要 9 分钟。

hot3.png

applicationcontext 代表IOC容器

 

获取的两种方式:

 

//ClassPathXmlApplicationcontext
systempathXmlApplicationContext

获取bean的两种方法:

 

通过bean 的ID获取

通过类来获取(Hello.Class),缺点(不唯一)可能存在多个相同类的bean

 

属性注入:

 

setter方法注入bean

<bean id="hello" class="sfdsfdsfds">
<property name="属性名字" value="属性值">
</property>
</bean>

通过构造方法来配置bean的属性:

(按构造函数参数的顺序配置)
<bean id="hello" class="sfdsfdsfds">
<constructor-arg value="属性值1"/>
<constructor-arg value="属性值2"/>
<constructor-arg value="属性值3"/>
</bean>

按顺序注入:

<bean id="hello" class="类的全路径">
<constructor-arg value="属性值1" index="0"/>
<constructor-arg value="属性值2" index="1"/>
<constructor-arg value="属性值3" index="2"/>
</bean>

按类型注入:

<bean id="hello" class="sfdsfdsfds">
<constructor-arg value="属性值1" type="java.Lang.String"/>
<constructor-arg value="属性值2" type="java.Lang.String"/>
<constructor-arg value="属性值3" type="int"/>
</bean>

字面值

:包含特殊字符可以使用<![CDATA[内容]]>

可以使用 ref 属性:将一个bean注入作为另一个bean的字段属性

也可以建立一个内部bean(但是这个内部bena不能被外部引用)

<null/> :赋值为空

可以为级联属性复制:

<constructor-arg ref="car"></constructor-arg>
<property name="car.maxSpeed" value="260"></property>

集合属性赋值:

使用list节点、set、map节点

<property name="cars">
    <list>
        <ref bean="car1"/>
        <ref bean="car2"/>
        <ref bean="car3"/>
    </list>
</property>

配置map属性值:

<property name="cars">
    <map>
        <entry key="AA" value-ref="car1"></entry>
        <entry key="bb" value-ref="car2"></entry>
    </map>
</property>

配置prop属性:(实际上是一个map 的子类)

<property>
    <props>
        <prop key="user">root</prop>
        <prop key="password">1234</prop>
        <prop key="jdbcUrl">jdbc:mysql:///test</prop>
        <prop key="driverClass">com.mysql.jdbc.Driver</prop>
    </props>
</property>

 

配置单例的bean(使用util):

不能将集合作为独立的bean定义,导致其他bean无法引用,可以使用util配置

<util:list id="cars">
    <ref bean="car1"/>
    <ref bean="car2"/>
</util:list>

引用上面的单例:
<bean id="person">
    <property name="cars" ref="cars">
    </property>
</bean>

使用P命名空间:

(需要先导入P命名空间)

下面中的cars属性指向的是一个bean
<bean id="person" class="com.xxx.Person" p:age="12" p:name="yabushan"
p:cars-ref="cars"></bean>

bean自动装配:

byType  byNsme 不推荐使用constractor

配置car的bean:
<bean id="car" class="" p:price="30000"></bean>

配置person的bean,自动装配car的bean(前提是person类中有car属性,且名字相同)

byName:根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的,则进行自动装配,若没有则不装配
byType:根据bean的类型和当前bean的属性的类型进行自动装配(若ioc容器中有1个以上的类型匹配的bean,则抛异常)

<bean id="person" class="" p:name="yabushan" autowire="byName"></bean>

bean之间的关系:

继承:

221933_lHT9_2482052.png

抽象bean:

Bean 的abstract属性为true,不能被ioc容器实例化,只用来被继承配置;

若某一个bean的class属性没有指定,则该bean必须是一个抽象bean

221953_AkAD_2482052.png

依赖    

222005_LlrQ_2482052.png

222011_jCbS_2482052.png

 

 

Bean的作用域

 

使用bean的scope属性来配置bean的作用域

 

Singleton:默认值,容器初始化时创建bean实例,在整个容器的生命周期内只创建这一个bean

 

Prototype:原型的,容器初始化时不创建bean的实例,而在每次请求时都创建一个新的bean实例

 

Request:

Session:

 

使用外部属性文件

 

222112_cqaV_2482052.png

222117_SJG1_2482052.png

 

222127_HmMG_2482052.png

 

Spel(spring表达式语言)

222142_WGv8_2482052.png

字面值

222213_JphB_2482052.png

引用bean、属性和方法

 

222232_ADU3_2482052.png

222239_g2IS_2482052.png

运算符

222255_BSUu_2482052.png

222259_Xo8f_2482052.png

222311_4gLL_2482052.png

 

Ioc容器中Bean的生命周期方法

222323_DKwL_2482052.png

Bean的后置处理器

实现beanpostprocessor接口,并提供两个方法的实现

用途:可在initbean之前和之后对bean做改变的处理

返回值:是实际上返回给用户的那个bean。

注意:可以在以上两个方法中修改返回的bean,甚至返回一个新的bean

 

配置bean的后置处理器后,不需要配置id,IOC容器自动识别一个beanpostprocessor

 

222406_muiu_2482052.png

222412_l1S7_2482052.png

222418_7JLs_2482052.png

 

工厂方法配置bean

静态工厂方法:

直接调用某一个类的静态方法就可以返回bean的实例

222443_IaJs_2482052.png

222449_uKlr_2482052.png

222453_48xR_2482052.png

222457_cC9T_2482052.png

实例工厂方法:

222509_thCo_2482052.png

222512_R1y9_2482052.png

Factorybean方法

222543_W1CP_2482052.png

223724_rnPx_2482052.png

223732_12HL_2482052.png

 

 

 

基于注解的方式配置bean

 

223742_rhG3_2482052.png

 

223755_Gtjh_2482052.png

使用annotation方式:

 

 

注解类型

223841_etmV_2482052.png

      Assignable方式:

全类名

223901_AJjO_2482052.png

 

223927_fsQw_2482052.png

 

 

泛型依赖注入

.....

 

 

 

转载于:https://my.oschina.net/yabushan/blog/692639

你可能感兴趣的文章
【Udacity】线性回归方程 Regression
查看>>
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
算法笔记--数论模板小集(待增)
查看>>
SASS初学者入门(转)
查看>>
C语言100个算法经典例题(七)
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>
测试组合索引
查看>>
四、物理优化(2)索引视图
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
钱趣多风控新举措:源头选择与物理隔离
查看>>
puppet最新源码包安装学习笔记
查看>>
烂泥:kickstart无人值守安装CentOS6.5
查看>>
Windows Phone 8 开发资源汇总
查看>>
互联网趋势关键词:交流,为价值付费,资源整合
查看>>
阿里钉钉,马云旗下的又一个千亿美金产品?
查看>>
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
查看>>
熟练掌握Word2003中的突出显示功能
查看>>