Spring学习

Spring负责管理项目中的所有对象。可以看做对象的管家。

一、Spring简单使用。

1、导入Jar包

这里写图片描述

2、创建一个对象
3、书写xml配置文件

src目录下:application.xml(任意的,建议这样做)

导入约束
1、preference->XML catalog->Add->File System选择要导入的约束文件(dtd/xsd约束)然后key type选择Schema location,在keys位置添加”/文件名“。
2、在application.xml中写一个< beans>标签,切换到Design视图右键beans选择Edit namespaces->Add,导入xsi;然后再次选择Add,选择Specify new namespace->Browse->select XML Catalog Entry,找到要导入的schema,然后复制去掉文件名的Location Hint到Namespace Names中去。定义prefix前缀,即可。

4、注册对象到容器中

二、IOC和DI

1、IOC(Inverse Of Control)反转控制

对象的创建以及依赖关系可以由spring完成创建和注入。反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序(spring)。

2、DI(Dependency Injection)依赖注入

实现IOC思想需要DI作支持。

注入方式:(1)set方法注入
(2)构造方法注入
(3)(不推荐)字段注入

注入类型:(1)值类型注入
(2)引用类型注入

三、Spring创建对象的方式

1、空参构造方法(主要用这个)
<bean name="user" class="yf.javaking.bean.User"></bean>
2、静态工厂
//调用UserFactory的createUser静态方法创建名为user的对象放入容器中
<bean name="user" class="yf.javaking.bean.b_create.UserFactory" factory-method="createUser"></bean>
3、实例工厂
//调用UserFactory的非静态方法(因此需要先实例化该类才可以调用方法)的xml配置方法
<bean name="user" factory-bean="userFactory" factory-method="createUser"></bean>

<bean name="userFactory" class="yf.javaking.bean.b_create.UserFactory"></bean>

四、bean元素属性

1、scope属性

singleton(默认值):被标识为单例的对象在容器中只会存在一个实例。
prototype:多例原型。被标识为多例的对象每次在获得时才会创建。每次创建都是新的对象。
request:web环境下与request生命周期一致
session:web环境下与session生命周期一致

2、生命周期属性

配置一个方法作为生命周期初始化方法,spring容器会在对象创建之后立即调用。init-method
配置一个方法作为生命周期销毁方法,spring容器在关闭并销毁所有容器中的对象前使用。destroy-method

3、分模块配置
<import>

五、属性注入

(1)set方法注入

    <bean name="user" class="yf.javaking.bean.User"> 
        <property name="name" value="tom"></property>
        <property name="age" value="18"></property>
        <!-- car为对象类型(car对象需要在xml中配置) -->
        <property name="car" rel="car"></property>
    </bean>

(2)构造函数注入

    <!-- 构造函数注入 -->
    <!-- name属性:构造函数的参数名 -->
    <!-- index属性:构造函数的参数索引 -->
    <!-- type属性:构造函数的参数类型 -->
    <bean name="user" class="yf.javaking.bean.User">
        <constructor-arg name="name" value="jerry" index="0" type="java.lang.Integer"></constructor-arg>
        <constructor-arg name="car" ref="car"></constructor-arg>
    </bean>

(3)p名称空间注入
文件头导入:xmlns:p="http://www.springframeword.org/schema/p"
(4)spel注入

复杂类型注入(List之类的类型注入)
    <!-- 复杂类型注入 -->
    <bean>
        <!-- 如果数组中只准备注入一个值(对象),直接使用value(ref)即可 -->
        <property name="arr" value="tom"></property>
        <!--array注入,多个元素注入 -->
        <property name="arr">
            <array>
                <value>tom</value>
                <value>jerry</value>
                <ref bean="user4"/>
            </array>
        </property>

        <!-- 如果list中只准备注入一个值(对象),直接使用value(ref)即可 -->
        <property name="list" value="jack"></property>
        <!-- list注入,多个元素注入 -->
        <property name="list">
            <list>
                <value>jack</value>
                <value>rose</value>
                <ref bean="user3"/>
            </list>
        </property>

        <!-- map类型注入 -->
        <property name="map">
            <map>
                <entry key="url" value="jdbc:"></entry>
                <entry key="user" value-ref="user4"></entry>
                <entry key-ref="user3" value-ref="user2"></entry>
            </map>
        </property>

        <!-- properties类型注入 -->
        <property name="prop">
            <props>
                <prop key="driverClass">com.jdbc.mysql.Driver</prop>
                <prop key="UserName">root</prop>
                <prop key="PassWord">123</prop>
            </props>
        </property>
    </bean>

六、在web.xml中配置容器随项目启动
这里写图片描述
需要导包:spring-web-4.2.4.RELEASE.jar

然后在使用中通过webApplicationContextUtils从application域中获取到spring容器
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值