Spring-01

1.Spring

1.1Spring简介

spring----春天,为软件行也带来了春天。

1.2 优点

Spring是一个免费的开源的框架(容器)

Spring是一个轻量级的,非入侵式的框架

控制反转(IOC)。面向切面编程(AOP)(重点)

支持事物的处理,对框架整合的支持。

总结:Spring就是一个轻量级的控制反转(IOC)和面向切面编程的框架!

2.IOC理论推导

我们使用一个set接口的实现,已经发生的革命性的变化

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

1,之前,程序员是主动创建对象,控制权在程序员手上!

2,使用了set注入之后,程序不在具有主动性,而是变成了被动的接受对象。

3.HelloSpring

控制:谁来控制一下对象的创建,传统应用程序的对象是由程序本身控制创建的,使用spring后,对象是由Spring来创建的;

反转:程序本身不创建对象,而变成被动的接受对象,

依赖注入:就是利用set方法来进行注入的

IOC是一种编程思想,由主动的编程变成被动的接收。

可以通过newClassPathXmlApplicationContext来浏览一下底层的源码,

4.IOC创建对象的方式

1.使用无参构造创建对象,默认!

2.假设我们要使用有参构造来创建对象。

下标赋值
<bean id="User" class="com.lm.pojo.User">
    <constructor-arg index="0" value="赖敏"/>
</bean>
<!--    第二种,类型创建-->
<!--    <bean id="User" class="com.lm.pojo.User">-->
<!--        <constructor-arg type="java.lang.String" value="我是爸爸"/>-->
<!--    </bean>-->

<!-- 第三种直接通过参数名字-->
    <bean id="User" class="com.lm.pojo.User">
        <constructor-arg name="name"  value="妈妈"/>
    </bean>

配置文件在加载的时候就已经初始化了!!!

5.Spring配置

1.别名

<alias name="User" alias="rtyuiohdgvhcjkjh"/>

2.Bean的配置

<bean id="User" class="com.lm.pojo.User" name="na uu,ee;oi">
    <constructor-arg name="name"  value="妈妈"/>
</bean>

3.import导入

用于导入多个配置文件,将他合并为一个配置文件

<import resource="beans.xml"/>
<import resource="beans.xml"/>
<import resource="beans.xml"/>

6.依赖注入

1.构造器注入

2.Set方式注入

依赖:bean对象的创建依赖容器

注入:bean中所有的属性,由容器注入。

1.复杂类型

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

2.真实测试对象

private String name;
private Address address;
private String[] books;
private List<String> hobbys;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
<bean id="address" class="com.lm.pojo.Address">
        <property name="address" value="上海"/>
    </bean>
    <bean id="student" class="com.lm.pojo.Student">
        <property name="name" value="赖敏"/>
<!--        Bean注入-->
        <property name="address" ref="address"/>
<!--        数组注入-->
        <property name="books">
            <array>
                <value>红楼梦</value>
                <value>三国演义</value>
                <value>西游记</value>
                <value>水浒传</value>
            </array>
        </property>
<!--        List注入-->
        <property name="hobbys">
            <list>
                <value>唱歌</value>
                <value>跳舞</value>
                <value>吃饭</value>
            </list>
        </property>
<!--        Map注入-->
        <property name="card">
            <map>
                <entry key="身份证" value="456789876545678987654345"/>
                <entry key="银行卡" value="0987656789098767890987678"/>
            </map>
        </property>

<!--        Set注入-->
        <property name="games">
            <set>
                <value>LOL</value>
                <value>COC</value>
                <value>BOB</value>
            </set>
        </property>
<!--        null-->
        <property name="wife">
            <null/>
        </property>
<!--      Properties注入  -->
        <property name="info">
            <props>
                <prop key="学号">00997</prop>
                <prop key="性别">男</prop>
                <prop key="姓名">赖敏</prop>
            </props>
        </property>
    </bean>

3.拓展方式注入

posted @ 2022-07-26 21:39  落日归山河  阅读(38)  评论(0)    收藏  举报