二、基于xml的Spring应用

二、基于xml的Spring应用

1.SpringBean的配置详解

在这里插入图片描述

applicationContext.getBean中的取值实际是name中的别名,一般配置id与id等价,也可以配置name取多个别名

    <bean id="userService" name="aaa,bbb" class="org.example.service.impl.UserServiceImpl">
        <property name="xxxDao" ref="userDao"></property>
    </bean>

2.bean的作用范围

在这里插入图片描述

    <bean id="userService" class="org.example.service.impl.UserServiceImpl" scope="prototype">
        <property name="xxxDao" ref="userDao"></property>
    </bean>

3.bean的延迟加载

在这里插入图片描述

例:在创建的时候打上断点,一开始不会初始化Bean,当运行到创建语句的时候才进行创建

在这里插入图片描述

在这里插入图片描述

4.bean的初始化和销毁方法配置

一般不会调用bean的销毁方法,容器一般是直接挂掉了,不是自然关闭

在这里插入图片描述

除了这种配置来执行对bean的初始化操作,我们还可以通过实现InitializingBean接口来完成

public class UserServiceImpl implements UserService , InitializingBean {
    public UserServiceImpl(){
        System.out.println("service实例化。。。");
    }
    public void init(){
        System.out.println("初始化...");
    }
    public void setXxxDao(UserDao userDao){
        System.out.println("完成配置。。。");
        System.out.println(userDao);
    }

    public void afterPropertiesSet() throws Exception {
        System.out.println("afterPropertiesSet执行。。。");
    }
}

在这里插入图片描述

5.spring的实例化配置

在这里插入图片描述
在这里插入图片描述

//对于带参数的构造在标签体里面利用这种方法来进行赋值
<constructor-arg name=" " value=" "></constructor-arg>

工厂方式实例化:

在这里插入图片描述

静态工厂方法:

//首先创建一个类实现一个静态方法创建并返回一Bean
public class mybean {
    public static UserDao userDao(){
        return new UserDaoImpl();
    }
}
//在配置中指定工厂方法    
<bean id="userDao1" class="org.example.factory.mybean" factory-method="userDao"></bean>

在这里插入图片描述

通过这种方法我们可以手动的在创建bean的时候进行一些其他业务逻辑操作,对于有些第三方包可以直接调用对应方法来创建bean

实例工厂方法:

在原来的基础上去掉静态static,xml配置如下

//先创建对象   
<bean id="mybean" class="org.example.factory.mybean" ></bean>
//然后根据对象来调用方法
<bean id="userDao2" factory-bean="mybean" factory-method="userDao"></bean>

对于有些第三方的包,其构造不是通过构造方法产生而是通过某些对象的方法来产生bean,相比于静态方法,静态可以直接去调用方法,而实例化需要先创建对象

实现FactoryBean方法:

public class mybean implements FactoryBean<UserDao> {
    public UserDao getObject() throws Exception {
        return new UserDaoImpl();
    }
    public Class<?> getObjectType() {
        return UserDao.class;
    }
}
<bean id="userDao3" class="org.example.factory.mybean"></bean>

延迟实例化是因为在创建时先放在缓存中,用到的时候再调用,再次调用时就可以直接去缓存中拿来用

在这里插入图片描述

6.bean的注入方式

在这里插入图片描述
在这里插入图片描述

对于集合方式的依赖注入:

public class UserServiceImpl implements UserService {
    private List<String> lists;
    //利用set方法
    public void setLists(List<String> lists) {
        this.lists = lists;
    }
    private List<UserDao> listdao;

    public void setListdao(List<UserDao> listdao) {
        this.listdao = listdao;
    }
    public void show(){
        System.out.println(lists);
        System.out.println(listdao);
    }
}
    <bean id="userService" class="org.example.service.impl.UserServiceImpl">
        <property name="lists">
            <list>
                <value>aaa</value>
                <value>aaa</value>
                <value>aaa</value>
            </list>
        </property>
        <property name="listdao">
            <list>
                //也可以利用ref导入外部bean的id <ref bean="id"></ref>
                <bean class="org.example.dao.impl.UserDaoImpl"></bean>
                <bean class="org.example.dao.impl.UserDaoImpl"></bean>
                <bean class="org.example.dao.impl.UserDaoImpl"></bean>
            </list>
        </property>
    </bean>

    <bean id="userDao" class="org.example.dao.impl.UserDaoImpl"></bean>
</beans>

在这里插入图片描述
在这里插入图片描述

7.spring的其他配置标签

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值