目录
前言
书接上回:Spring入门-ioc基础案例代码_年关的博客-CSDN博客
我们通过Spring方式进行了对象创建,但是如果对象本身所具有的某个属性就是对象,同样需要new,这样的话我们该怎么做呢?
Spring为我们提供了解决办法,在<bean>标签里提供了<property>标签来对类属性进行注入
一、创建set方法让外部进行方法提供
1、创建接口
public interface BookService { String all(); void setBookDao(BookDao bookDao); }
2、实现接口
这里的bookDao是另一个对象,使用使用set方法,以供Spring框架在创建对象的自动调用为BookDao赋值
public class BookServiceImpl implements BookService{ // BookDao bookDao=new BookDaoImpl(); // 删除业务层中使用new创建对象,使用set提供方法 private BookDao bookDao; @Override public String all() { System.out.println("BookServiceImpl"); bookDao.select(); return null; } @Override public void setBookDao(BookDao bookDao) { this.bookDao=bookDao; } }
二、配置文件
<?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"> <!-- .导入serping坐标 spring-context 5.2.10 R--> <!-- 2,配置bean--> <!-- bean标签配置bean--> <!-- id表示给bean起名字--> <!-- class属性表示给bean起名字--> <bean class="com.demo2.Dao.BookDaoImpl" id="bookDaobean"></bean> <bean class="com.demo2.service.BookServiceImpl" id="bookServicebean"> <!-- 配置service与dao的关系--> <!-- property表示配置当前bean的属性 name表示bookService内的属性对象,ref表示对象的来源,来自其他的bean--> <property name="bookDao" ref="bookDaobean"/> </bean> </beans>
在这里,我们先对bookdao行配置,然后再对bookservice内的bookdao对象尽行绑定,在bookServicebean被调用的时候,会自动生成bookDao进行注入
三、实际运行
源代码:
package com.demo2; import com.demo2.Dao.BookDao; import com.demo2.service.BookService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class app { public static void main(String[] args) { // 获取ioc容器 ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContest.xml"); //获取bean BookService bookService = (BookService) ctx.getBean("bookServicebean"); bookService.all(); } }
运行结果: