2.在spring配置文件配置对象创建与属性注入。
<?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.hxh.Book"> <!--set属性注入--> <!--使用property完成属性注入--> <property name="bname" value="Java程序设计"></property> <property name="bauthor" value="Spring5开发实践"></property> </bean> </beans>
3.测试
@Test public void testBook(){ //1.加载spring配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); //2.获取配置创建的对象 Book book = context.getBean("book", Book.class); //3.输出相关信息 book.testDemo(); }
演示使用有参构造注入属性
1.首先,创建一个类,在类中提供相应的有参构造方法。以Srudent类为例!
public class Student { private String sname; //有参构造 public Student(String sname) { this.sname = sname; } //方便测试 public void testDemo(){ System.out.println("sname = " + sname); } }
2.在spring配置文件配置对象创建与属性注入。
<?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="student" class="com.hxh.Student"> <constructor-arg name="sname" value="黄小黄"></constructor-arg> </bean> </beans>
3.测试。(其实和set注入大同小异,往后xml配置文件就不再赘述了)
@Test public void testStudent(){ //1.加载Spring配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml"); //2.获取配置的对象 Student student = context.getBean("student", Student.class); //3.输出相关信息 student.testDemo(); }
2.2.2 注入空值和特殊符号
以2.2.1演示的book类为例,演示代码如下:
<!--配置对象创建--> <bean id="book" class="com.hxh.Book"> <!--注入空值--> <property name="bname"> <null/> </property> <!--注入特殊符号--> <property name="bauthor"> <value> <![CDATA[<><><><><>....具体值]]> </value> </property> </bean>
注入特殊符号除了以上的方式,还可以使用转移符号。
2.2.3 注入属性
2.2.3.1 外部bean与内部bean
创建两个类,一个接口UserDao,对应的实现关系及内部方法如下图所示:
此时如果想在UserService里调用UserDaoImpl中的方法该怎么做?
传统方式如下图:
在Spring中可以通过配置实现:
1.在UserServie中创建UserDao类型的属性,并生成对应的set方法,方便注入(2.2.1演示过,这里不再赘述)。
2.在配置文件中进行配置。注意ref属性需要与被注入的bean id保持一致(参照的bean)!
<!--service和dao对象创建--> <bean id="userService" class="com.ithxh.spring5.service.UserService"> <!--注入userDao对象 name属性值:类里面属性名称 ref属性:创建userDao对象bean标签的id值 --> <property name="userDao" ref="userDao"></property> </bean> <bean id="userDao" class="com.ithxh.spring5.dao.UserDaoImpl"></bean>