spring学习(spring-DI简单入门案例)
目录
一、spring-DI入门案例的实现思路分析。
(1)bean管理与创建对象的方式。
(2)如何注入?
二、导入依赖坐标。接口与实现类。编写配置文件。
(1)spring-context。
(2)接口与实现类。
<1>dao层。
<2>service层。
(3)新建spring配置文件(XXX.xml)。
(4)配置bean。
<1>属性class。
<2>属性id。
<3>标签配置当前bean的属性。
三、测试类。
(1)编写测试类(App)。
(2)运行结果。
一、spring-DI入门案例的实现思路分析。
(1)bean管理与创建对象的方式。
- 首先,一定是基于IoC管理bean。
- 不能在XXXService中使用new形式创建的XXXDao对象。
(2)如何注入?
- 在XXXService中所需的XXXDao对象如何进入(注入)到XXXService中?(提供方法)
- XXXService与XXXDao之间的关系如何进行描述?(采用配置)
二、导入依赖坐标。接口与实现类。编写配置文件。
(1)spring-context。
(2)接口与实现类。
<1>dao层。
BookDao。
package com.fs.dao; public interface BookDao { /** * dao层的save方法 */ void save(); }
BookDaoImpl。
package com.fs.dao.impl; import com.fs.dao.BookDao; public class BookDaoImpl implements BookDao { @Override public void save() { System.out.println("book dao save..."); } }
<2>service层。
BookService。
package com.fs.service; public interface BookService { /** * service层save方法 */ void save(); }
BookServiceImpl。
package com.fs.service.impl; import com.fs.dao.BookDao; import com.fs.dao.impl.BookDaoImpl; import com.fs.service.BookService; public class BookServiceImpl implements BookService { /*private BookDao bookDao = new BookDaoImpl();*/ private BookDao bookDao; //提供成员属性的setter方法 public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } @Override public void save() { System.out.println("book service save..."); bookDao.save(); } }
(3)新建spring配置文件(XXX.xml)。
(4)配置bean。
- 通过<bean>标签配置bean。
<1>属性class。
- 通过class属性标明管理的bean对象所属类(给bean定义类型)。注意:不要配接口,要配实现类!
<2>属性id。
- 通过id属性标明当前配置的bean。(相当于"起名字",方便拿取)
<3>标签<property>配置当前bean的属性。
- 这里实现的方式——依赖注入(DI)中的setter注入。
- name属性值一定要与使用依赖注入的类(BookServiceImpl)的成员变量名(bookDao)相同。
- name属性表示配置哪一个具体的属性。
- ref属性表示参照哪一个具体的bean。而这个ref属性值对应某个bean的"id"。
三、测试类。
(1)编写测试类(App)。
- 通过ApplicationContext加载spring配置文件。
package com.fs.test; import com.fs.service.BookService; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main(String[] args) { //获取IoC容器 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springContext.xml"); //通过id获取指定bean BookService bookService = (BookService) context.getBean("bookService"); bookService.save(); } }
(2)运行结果。
- service层的save方法与dao层的save方法都已被调用。