【Spring笔记】03、value与注入方式的区别,特殊值的注入问题,各种类型的自动装配

1.value与<value>注入方式的区别:

 

使用子元素<value>注入

而使用value属性注入

参数值位置

写在首尾标签(<value></value>)的中间(不加双引号)

写在value的属性值中(必须加双引号)

type属性

 

有(可选)

可以通过type属性指定数据类型

参数值包含特殊字符(<, &)时的处理方法

两种处理方法。

一、使用<![CDATA[  ]]>标记

二、使用XML预定义的实体引用

一种处理方法。即使用XML预定义的实体引用

其中,XML预定义的实体引用,部分如表所示。

实体引用

表示的符号

&lt;

<

&amp;

&

&gt;

>


2.特殊值的注入问题

①给对象类型赋值null :
        <property name="name" >  
                <null/>     
        </property>

注意:赋值null 没有<value>
②赋空值 ""  :
        <property name="name" >  
                <value></value>  
        </property>

3.ioc中定义bean的前提

在ioc中定义bean的前提:该bean的类必须提供了无参构造(系统会自动生成无参构造,但定义了有参构造后系统不会自动生成无参构造)

4.自动装配(第四种依赖注入)(只适用于ref类型 ):

约定优于配置
自动装配:
<bean ... class="org.lanqiao.entity.Course"  autowire="byName|byType|constructor|no" >  byName本质是byId
①byName:  自动寻找:其他bean的id值=该Course类的属性名
②byType:  其他bean的类型(class) 是否与 该Course类的ref属性类型一致  (注意,此种方式必须满足:当前Ioc容器中只能有一个Bean满足条件
③constructor: 其他bean的类型(class) 是否与该Course类的构造方法参数的类型一致;此种方式的本质就是byType


可以在头文件中 一次性将该ioc容器的所有bean统一设置成自动装配:
<beans xmlns="http://www.springframework.org/schema/beans"
...
default-autowire="byName">

提示:自动装配虽然可以减少代码量,但是会降低程序的可读性,使用时需要谨慎。


5.使用注解定义bean:

通过注解的形式将bean以及相应的属性值放入ioc容器

<context:component-scan base-package="org.lanqiao.dao">
</context:component-scan>Spring在启动的时候,会根据base-package在该包中扫描所有类,查找这些类是否有注解@Component("studentDao"),如果有,则将该类 加入spring Ioc容器。

@Component细化:

①dao层注解:@Repository
②service层注解:@Service
③控制器层注解:@Controller


 

猜你喜欢

转载自blog.csdn.net/kuaileky/article/details/89356267