善倾的知识体系构建之路Java 杂谈程序员

装配 Spring Bean

2018-09-21  本文已影响1人  善倾

Spring 框架基于控制反转和依赖注入得以实现的自动装配 Bean 对象的功能,关于装配 Bean 对象,掌握下图这 4 个内容就可以了。

_装配Spring+Bean 1.png

依赖注入的三种方式

对象交给 Spring 进行创建了,但是属性如何初始化呢?Spring 初始化 Bean 对象属性有三种方式如下图:

_依赖注入的三种方式.png

构造器注入

使用方式要满足两点:

public Car(String name, Double price) {
    this.name = name;
    this.price = price;
}
<!-- 属性注入的方式:构造函数注入,(其他类型对象也是可以的哦) -->
<bean id="car" class="com.itheima.spring.demo4.Car">
    <constructor-arg name="name" value="BMW"/>
    <constructor-arg name="price" value="2383890"/>
</bean>

使用 setter 注入

使用方式要满足两点:

private String name;
public void setName(String name) {
    this.name = name;
}
<bean id="userDao" class="com.itheima.spring.demo1.UserDAOImpl">
    <property name="name" value="keqi"></property>
</bean>

这种方式灵活性更高,通常都是使用这种方式!

接口注入

通常都是用这种方式从外界系统中获得资源,Spring 中用的不多。比如 JavaWeb 中的requestresponse内置对象,就是通过接口注入的方式得到的。

XML 装配 Bean 的方式

_XML装配Bean.png

Bean 类的配置

<bean id="userDao" class="packageName.UserDAOImpl">
</bean>

普通属性的配置

基本数据类型和 String 类型的字符串都是这样配置的

<bean id="userDao" class="packageName.UserDAOImpl">
    <property name="name" value="keqi"/>
</bean>

其他类型的对象

其他类型的对象要用ref属性指定,值就是其他 Bean 对象的id属性。

<bean id="employee" class="packageName.Employee">
    <property name="name" value="keqi"/>
    <!-- 引用其他对象,用ref引用就可以了哦 -->
    <property name="car2" ref="car2"/>
</bean>

集合属性的配置

如果某个属性是集合类型的,只要在property属性下加上对应集合类型的标签即可。

<property name="list">
    <list>
        <value>aaa</value>
        <value>bbb</value>
        <value>ccc</value>
    </list>
</property>
<property name="map">
    <map>
        <entry key="aaa" value="111"/>
        <entry key="bbb" value="222"/>
        <entry key="ccc" value="333"/>
    </map>
</property>
<property name="set">
    <set>
        <value>aaa</value>
        <value>bbb</value>
        <value>ccc</value>
    </set>
</property>

Bean生命周期&作用范围的配置

指定生命周期的方法和类对象的作用范围如下

<bean id="customerDAO" class="packageName.CustomerDAOImpl"
    init-method="setup" destroy-method="destroy"
    scope="prototype">
</bean>

注解配置 Bean 的方式

Spring 开发中通常都是用的注解来配置 Bean 类的,这种方式开发更快捷。


_注解配置Bean.png

Bean 类的注解

表示一个类交给 Spring 进行管理用的是@Component注解。但是通常用的是它衍生初的另外三个注解,这样看到注解就能够知道这个类在三层架构中处于什么位置。

Bean 属性的注解

Bean 类的属性分为普通属性和对象类型的属性。记住下面两个注解就可以了:

Bean 生命周期的注解

因为 Bean 对象是由 Spring 进行管理的,所以它和 Servlet 类一样,也有所谓的生命周期方法。

一个是初始化方法,Bean 对象创建后立即执行此方法,另一个是销毁方法,Bean 对象销毁之前会执行此方法。分别使用以下两个注解来描述对应的方法:

Bean 作用范围的注解

Bean 对象是有作用范围概念的,在 WEB 应用中,Bean 对象可以作为request或者session内置对象的属性存在。同时还需要指定它创建的方式,是保证单例创建,还是多例创建。用@Scope属性来描述类,他有以下 4 个属性:

XML&注解混合配置Bean

注解开发快速,后期不好维护,XML 后期好维护,开发繁琐。所以通常也会结合他们的优点,两者混合使用来配置 Bean 。原则就是,类用 XML 描述,属性用注解描述。

上一篇下一篇

猜你喜欢

热点阅读