SpringIOC_05 测试泛型依赖注入+IOC总结

约定不等于承诺〃 2023-06-18 11:57 51阅读 0赞

本人是个新手,写下博客用于自我复习、自我总结。
如有错误之处,请各位大佬指出。
学习资料来源于:尚硅谷


Book.java:

  1. public class Book {
  2. }

User.java:

  1. public class User {
  2. }

BaseDao.java:

  1. /** * 定义了基本的增删改查方法 * * */
  2. public abstract class BaseDao<T> {
  3. public abstract void save();
  4. }

BookDao.java:

  1. import org.springframework.stereotype.Repository;
  2. import com.guigu.bean.Book;
  3. @Repository
  4. public class BookDao extends BaseDao<Book>{
  5. @Override
  6. public void save() {
  7. // TODO Auto-generated method stub
  8. System.out.println("BookDao...保存图书...");
  9. }
  10. }

UserDao.java:

  1. import org.springframework.stereotype.Repository;
  2. import com.guigu.bean.User;
  3. @Repository
  4. public class UserDao extends BaseDao<User>{
  5. @Override
  6. public void save() {
  7. // TODO Auto-generated method stub
  8. System.out.println("UserDao...保存用户....");
  9. }
  10. }

BaseService.java:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import com.guigu.dao.BaseDao;
  3. public class BaseService<T> {
  4. @Autowired
  5. BaseDao<T> baseDao;
  6. public void save(){
  7. System.out.println("自动注入的dao:"+baseDao);
  8. baseDao.save();
  9. }
  10. }

BookService.java:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.stereotype.Service;
  3. import com.guigu.bean.Book;
  4. @Service
  5. public class BookService extends BaseService<Book>{
  6. }

UserService.java

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.stereotype.Service;
  3. import com.guigu.bean.User;
  4. @Service
  5. public class UserService extends BaseService<User>{
  6. }

applicationContext.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <!-- 实验23:测试泛型依赖注入 -->
  4. <!-- 泛型依赖注入:注入一个组件的时候,他的泛型也是参考标准 -->
  5. <context:component-scan base-package="com.guigu"></context:component-scan>
  6. </beans>

IOCTest.java:

  1. import static org.junit.Assert.*;
  2. import org.junit.Test;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. import com.guigu.service.BookService;
  6. import com.guigu.service.UserService;
  7. public class IOCTest {
  8. ApplicationContext ioc=new ClassPathXmlApplicationContext("applicationContext.xml");
  9. @Test
  10. public void test() {
  11. BookService bookService=ioc.getBean(BookService.class);
  12. UserService userService=ioc.getBean(UserService.class);
  13. bookService.save();
  14. userService.save();
  15. //获取父类:
  16. System.out.println(bookService.getClass().getSuperclass());
  17. //获取泛型父类:
  18. System.out.println(bookService.getClass().getGenericSuperclass());
  19. //Spring中可以用带泛型的父类类型来确定这个子类的类型
  20. }
  21. }

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,并提供外界获取功能…

发表评论

表情:
评论列表 (有 0 条评论,51人围观)

还没有评论,来说两句吧...

相关阅读

    相关 依赖注入

    纸上得来终觉浅 关于泛型依赖注入,只明白它的思想,考虑了整个下午都不明确它所应用的场合,暂时把用法记下来,后面再学习整理。使用示例如下: public class

    相关 Spring--依赖注入

    spring 4.x以上版本才有 创建两个带泛型的类,并配置两者的依赖关系,对于继承这两个类的子类,如果泛型相同,则会继承这种依赖关系: ![watermark_type

    相关 依赖注入1-IoC

    ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了