Spring框架之配置文件bean的配置及用法

Spring框架之配置文件bean的配置及用法

首先:配置spring依赖、创建spring config.xml文件

在创建好maven项目之后,在maven的pom.xml文件里添加如下依赖:

// Spring容器的依赖,本人用的是5.2.5的版本
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
</dependencies>

在idea中,在导入spring框架之后,可以直接通过向导new->xml configration file->spring config创建spring的配置文件。
本篇文章侧重bean的配置。

scope属性

scope指定bean定义的对象的作用域,分为prototype原型模式与singleton单例模式,其区别在于每次通过核心容器对象getbean()方法是否会得到一个新的对象。指定scope="singleton"则会以单例模式创建对象,每次创建的都是同一个对象。而指定scope="prototype"则会以原型模式得到不同的对象。

init-method,destroy-method属性

用init-method意为初始化方法,可以调用实体类中的方法,该方法在容器初始化对象的时候调用,而不是在创建实体类对象的时候,可以用于为具体的实体类初始化操作。
与之相对应的便是destroy-method属性,该方法为销毁容器对象调用的方法,一般用于业务对对象的持久操作,需要说明的是,不同的核心容器对象销毁方法不同,在ClassPathXmlApplicationContext容器中是close()方法。如下:

ClassPathXmlApplicationContext classps=new ClassPathXmlApplicationContext("spring0613.xml");
classps.close();

在容器对象的close()时,如果在bean中配置了destroy-method的话,就会调用destroy-method指定的在对应实体类中的方法。

lazy-init属性

意为懒加载,如果指定lazy-init=“true”,创建对象的操作只会在对象容器调用getBean()时,在原型模式中,默认是以懒加载的方式创建对象,而单例模式中默认以非懒加载的方式创建对象。

依赖注入的三种方式

构造方法的方式依赖注入

第一种构造方式自动装配,首先在实体类里面添加相应的构造方法,注意:想要有有参的构造方法必须先生成无参的构造方法,在bean的双标签中添加constructor-arg 方法在每一个属性里面添加相应的name value type属性,还需要在bean中添加自动注入的属性autowire=“constructor”,如下

// 在配置文件中
<bean class="com.Student" id="student" scope="singleton" init-method="initstudent" autowire="constructor">
    <constructor-arg name="name" value="张三" type="java.lang.String"></constructor-arg>
    <constructor-arg name="age" value="22" type="int"></constructor-arg>
</bean>
//实体类中无参的构造方法
public  Student(){
}
//实体类中有参的构造方法
public  Student( String  name){
    this.name=name;
}
//实体类中有参的构造方法
public  Student(int age,String  name){
    this.name=name;
    this.age=age;
}

即可完成构造方法的自动装配。

通过property属性

通过property属性 在property中添加属性name与value 属性配置,就可以完成对属性的初值的自动注入,该方法是通过调用类下的无参构造方法创建对象,之后通过属性(name)的get和set方法来注入依赖(DI)。

// 在配置文件中
<bean class="com.Teacher" id="teacher" scope="prototype" init-method="initteacher" destroy-method="destroy" lazy-init="true">
        <property name="age" value="19"></property>
        <property name="name" value="xiaosi"></property>
 </bean>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值