Spring学习1:Spring配置文件

本文详细介绍了Spring框架中的Bean作用域、生命周期、创建方式、依赖注入以及数据类型的注入,包括singleton和prototype两种作用域的区别,Bean的初始化和销毁方法,无参构造、工厂方法实例化Bean,以及通过set方法和构造器注入依赖。此外,还讲解了如何注入普通数据类型、集合数据类型,并提到了引入外部配置文件的方法。最后总结了Spring开发的基本步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring配置文件

注:实例的项目是idea中创建的普通Maven项目*

1.scope的作用范围配置

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

scope测试

  • singleton(默认配置)

配置方法

在这里插入图片描述

测试
在这里插入图片描述

  • prototype

配置方法

bean标签的scope属性改为prototype

测试

在这里插入图片描述

2.Bean生命周期配置

在这里插入图片描述

  1. 在bean(UserDaoImpl)中添加init和destroy方法

在这里插入图片描述

  1. 在applicationContext.xml的bean标签配置

在这里插入图片描述

Jubit单元测试结果

在这里插入图片描述

注:单元测试中因为还没来得及调用destroy方法就结束了,所以要调用ClassPathXmlApplicationContext类的close方法通知容器销毁。bean的scope属性要为singleton,prototype属性的bean对象还在使用就不会销毁。

3.Bean的三种创建方式

  • 无参构造方法实例化(重点)

    上面的操作全是无参构造

  • 工厂静态方法实例化(了解)

    配置(applicationContext.xml)

    <bean id="UserDao" class="com.boo.factory.StaticFactory"  factory-method="getUserDao">
    
  • /**
     * 静态工厂实现bean
     */
    public class StaticFactory {
    //    静态工厂方法,返回bean
        public static UserDao getUserDao(){
            return new UserDaoImpl();
        }
    }
    
  • 工厂实例方法实例化(了解)

    配置(applicationContext.xml)

    <!--    工厂实例方法实例化-->
        <bean id="factory" class="com.boo.factory.DynamicFactory"  ></bean>
        <bean id="UserDao" factory-bean="factory" factory-method="getUserDao"/>
    </beans>
    
    /**
     * 工厂实例方法实例化
     */
    public class DynamicFactory {
            //    工厂方法,返回bean
            public  UserDao getUserDao(){
                return new UserDaoImpl();
            }
        }
    

    tips:鼠标放在要获取的类名上面,鼠标右键,选择Copy Reference得到该类的全限定名.

    应用场景:Connection需要调用DriverManage的getCon方法来实例化

4.Bean的依赖注入

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

在这里插入图片描述

怎么将UserDao注入到UserService内部呢?

  • set方法注入

    配置

     <bean id="UserService" class="com.boo.dao.impl.UserServiceImpl">
            <property name="userDao" ref="UserDao"></property>
      </bean>
    

    注:userDao为UserServiceImpl类中需要被Set方法修改的成员变量,UserDao为UserDaoImpl的id名

    UserServiceImpl类:

在这里插入图片描述

  • 有参构造注入

    配置

    <bean id="factory" class="com.boo.factory.DynamicFactory"></bean>
        <bean id="UserService" class="com.boo.dao.impl.UserServiceImpl">
    <!--        有参构造注入-->
            <constructor-arg name="userDao" ref="UserDao"></constructor-arg>
        </bean>
    </beans>
    

在这里插入图片描述

5.Bean依赖注入的数据类型

  • 引用数据类型

    4中的操作,都是注入的引用Bean,除了对象的引用可以注入,普通数据类型,集合等都可以在容器中进行注入。

  • 普通数据类型

    <bean id="UserDao" class="com.boo.dao.impl.UserDaoImpl">
        <property name="username" value="张三"></property>
        <property name="userid" value="5"></property>
    </bean>
    

    问题:不知道为什么在工厂实例下配置总是报错

  • 集合数据类型

    将集合用set方法注入

在这里插入图片描述

配置

<bean id="UserDao" class="com.boo.dao.impl.UserDaoImpl" >
  • List

    <property name="strList" >
        <list>
            <value>aaa</value>
            <value>bbb</value>
            <value>ccc</value>
        </list>
    </property>
    
  • Map<String,User>

    <property name="userMap">
        <map>
            <entry key="u1" value-ref="User1"></entry>
            <entry key="u2" value-ref="User2"></entry>
        </map>
    </property>
    
        <bean id="User1" class="com.boo.domain.User">
            <property name="addr" value="dongguan"></property>
            <property name="name" value="zhangsan"></property>
        </bean>
        <bean id="User2" class="com.boo.domain.User">
            <property name="addr" value="Changsha"></property>
            <property name="name" value="lisan"></property>
        </bean>
    
  • properties

        <property name="properties">
            <props>
                <prop key="p1">ppp</prop>
                <prop key="p2">ppp</prop>
                <prop key="p3">ppp</prop>
            </props>
        </property>
    </bean>
    
</bean>

6.引入其他配置文件(分模块开发)

实际开发中,Spring的配置内容会非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件照片那个通过inport标签进行加载

配置

<import resource="applicationContext-xxx.xml"></import>

注意:import的标签和bean标签同级,在beans标签下

7.spring开发步骤总结

1.在pom.xml里导入坐标
在这里插入图片描述

2.创建Bean
在这里插入图片描述

3.创建Bean实现接口
在这里插入图片描述

4.创建applicationContext.xml,并将Bean配置

在这里插入图片描述

5.创建ApplicationContetxt对象getBean

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值