7. Spring之泛型依赖注入

Spring之泛型依赖注入

Spring 4.x中可以为子类注入子类对应的泛型类型的成员变量的引用。

1. 引入依赖
    <dependencies>

        <!--测试所用的包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!--spring框架所用包,有四个-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>


    </dependencies>
2. 添加配置文件

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"
       xsi:schemaLocation="
       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.xsd
">

    <context:component-scan base-package="cn.justweb.calculator"/>

</beans>
3. 实体类

User

/**
 * @Date 2020/5/25 23:41
 * @Version 10.21
 * @Author DuanChaojie
 */
public class User {
}

Book

public class Book {
}
4. Dao

BaseDao

public abstract class BaseDao<T> {
    public abstract void save();
}

UserDao

@Repository
public class UserDao extends BaseDao<User> {
    @Override
    public void save() {
        System.out.println("我是UserDao中的save方法。");
    }
}

BookDao

@Repository
public class BookDao extends BaseDao<Book> {
    @Override
    public void save() {
        System.out.println("我是BookDao中的save方法。");
    }
}
5. Service

BaseService

public class BaseService<T> {

    @Autowired
    private BaseDao<T> baseDao;

    @Test
    public void save(){
        System.out.println("自动注入的dao:"+baseDao);
        baseDao.save();
    }
}

UserService

@Service
public class UserService extends BaseService<User>  {
}

BookService

@Service
public class BookService extends BaseService<Book> {
}
6. 测试
/**
 * @Date 2020/5/25 23:57
 * @Version 10.21
 * @Author DuanChaojie
 */
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);

        //自动注入的dao:cn.justweb.calculator.bean.dao.BookDao@3f56875e
        //我是BookDao中的save方法。
        bookService.save();

        //自动注入的dao:cn.justweb.calculator.bean.dao.UserDao@2b4bac49
        //我是UserDao中的save方法。
        userService.save();
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值