SpringIOC_05 测试泛型依赖注入+IOC总结
本人是个新手,写下博客用于自我复习、自我总结。
如有错误之处,请各位大佬指出。
学习资料来源于:尚硅谷
Book.java:
public class Book {
}
User.java:
public class User {
}
BaseDao.java:
/** * 定义了基本的增删改查方法 * * */
public abstract class BaseDao<T> {
public abstract void save();
}
BookDao.java:
import org.springframework.stereotype.Repository;
import com.guigu.bean.Book;
@Repository
public class BookDao extends BaseDao<Book>{
@Override
public void save() {
// TODO Auto-generated method stub
System.out.println("BookDao...保存图书...");
}
}
UserDao.java:
import org.springframework.stereotype.Repository;
import com.guigu.bean.User;
@Repository
public class UserDao extends BaseDao<User>{
@Override
public void save() {
// TODO Auto-generated method stub
System.out.println("UserDao...保存用户....");
}
}
BaseService.java:
import org.springframework.beans.factory.annotation.Autowired;
import com.guigu.dao.BaseDao;
public class BaseService<T> {
@Autowired
BaseDao<T> baseDao;
public void save(){
System.out.println("自动注入的dao:"+baseDao);
baseDao.save();
}
}
BookService.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.guigu.bean.Book;
@Service
public class BookService extends BaseService<Book>{
}
UserService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.guigu.bean.User;
@Service
public class UserService extends BaseService<User>{
}
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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 实验23:测试泛型依赖注入 -->
<!-- 泛型依赖注入:注入一个组件的时候,他的泛型也是参考标准 -->
<context:component-scan base-package="com.guigu"></context:component-scan>
</beans>
IOCTest.java:
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.guigu.service.BookService;
import com.guigu.service.UserService;
public class IOCTest {
ApplicationContext ioc=new ClassPathXmlApplicationContext("applicationContext.xml");
@Test
public void test() {
BookService bookService=ioc.getBean(BookService.class);
UserService userService=ioc.getBean(UserService.class);
bookService.save();
userService.save();
//获取父类:
System.out.println(bookService.getClass().getSuperclass());
//获取泛型父类:
System.out.println(bookService.getClass().getGenericSuperclass());
//Spring中可以用带泛型的父类类型来确定这个子类的类型
}
}
IOC总结:
- ioc是一个容器,帮我们管理所有的组件:
* 1、依赖注入:@Autowired,自动赋值
* 2、某个组件要使用Spring提供的更多功能(包括IOC、AOP)必须加入到容器中 - 体会:
* 1、容器启动,创建所有单实例bean
* 2、autowired自动装配的时候,是从容器中找这些符合要求的bean
* 3、ioc.getBean(“bookServlet”);也是从容器中找到这个bean
* 4、也就是说容器中包括了所有的bean
* 5、调试spring的源码,容器到底是什么?其实就是一个map
* 6、这个map中保存所有创建好的bean,并提供外界获取功能…
还没有评论,来说两句吧...