Day8——字面量、空值、引用其他Bean

一. 回顾

前面Day7——DI依赖注入构造器方法讲到了,现在讲一下注入字面量。

二. 原理

2.1 什么是字面量?

通俗地说就是可以用一个值描述的就是字面量,比如1,2.2,‘a’,“老王”,等等。

专业的说就是:

  1. 可以使用字符串表述的值。可以通过value属性或value子节点指定
  2. 基本数据类型及其封装类、String类都可以采用字面量值注入的方式
  3. 若字面量包括特殊的字符,可以使用<![CDATA[]]>把字面值包裹起来

特殊的字符有:

  • 通过实体来代替:格式为&xxx;
特殊字符 格式
空格 &nbsp;
& &amp;
< &lt;
> &gt;
项目结构如下:

在这里插入图片描述

代码

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="&lt;&lt;Thinking in Java&gt;&gt;"></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="&lt;&lt;Thinking in Java&gt;&gt;"></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="&lt;&lt;Thinking in Java&gt;&gt;"></property> -->
         <property name="bookName" >
             <value><![CDATA[<<Thinking in Java>>]]></value>
         </property>
    </bean>
发布了177 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40634846/article/details/104099390