一. 回顾
前面Day7——DI依赖注入构造器方法讲到了,现在讲一下注入字面量。
二. 原理
2.1 什么是字面量?
通俗地说就是可以用一个值描述的就是字面量,比如1,2.2,‘a’,“老王”,等等。
专业的说就是:
- 可以使用字符串表述的值。可以通过value属性或value子节点指定
- 基本数据类型及其封装类、String类都可以采用字面量值注入的方式
- 若字面量包括特殊的字符,可以使用<![CDATA[]]>把字面值包裹起来
特殊的字符有:
- 通过实体来代替:格式为&xxx;
特殊字符 | 格式 |
---|---|
空格 |  ; |
& | &; |
< | <; |
> | >; |
项目结构如下:
代码
Book.java
package com.atguigu.spring.bean;
public class Book {
private String bookName;
private double price;
public Book() {
super();
// TODO Auto-generated constructor stub
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Book [bookName=" + bookName + ", price=" + price + "]";
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="book" class="com.atguigu.spring.bean.Book">
<property name="price" value="100"></property>
<!-- <property name="bookName" value="<<Thinking in Java>>"></property> -->
<property name="bookName" >
<value><![CDATA[<<Thinking in Java>>]]></value>
</property>
</bean>
</beans>
Main.java
package com.atguigu.spring.bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
Book book = context.getBean("book", Book.class);
System.out.println(book);
}
}
解释: 如果忘记了实体怎么写,则用下面的格式,要配合<value>
节点使用,不能使用value属性了
2.2 空值
有时需要赋给成员变量null值
<bean id="book1" class="com.atguigu.spring.bean.Book">
<property name="price" value="100"></property>
<!-- <property name="bookName" value="<<Thinking in Java>>"></property> -->
<property name="bookName">
<null/>
</property>
</bean>
解释: 在<property>
里面使用<null/>
标签即可
2.3 引用其他Bean
<bean id="person" class="com.atguigu.spring.bean.Person">
<property name="name" value="老王"></property>
<property name="book" ref="book3"></property>
<!-- 给book的price变量赋值 -->
<property name="book.price" value="70"></property>
</bean>
<bean id="book3" class="com.atguigu.spring.bean.Book">
<!-- <property name="bookName" value="<<Thinking in Java>>"></property> -->
<property name="bookName" >
<value><![CDATA[<<Thinking in Java>>]]></value>
</property>
</bean>