//在基类中使用Autowire装配,无需其他额外配置
//继承基类的子类使用Spring的annotation即可
基类部分:
applicationContext.xml部分:
//继承基类的子类使用Spring的annotation即可
//详情操作可见代码
测试类:
package com.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.util.UserService;
public class Test {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//在基类中使用Autowire装配,无需其他额外配置
//继承基类的子类使用Spring的annotation即可
//详情操作可见代码
UserService us = (UserService) ctx.getBean("userService");
us.save();
}
}
基类部分:
package com.spring.util;
public class SpringDao<T> {
public void save(){
System.out.println("save");
}
}
package com.spring.util;
import java.lang.reflect.ParameterizedType;
import org.springframework.beans.factory.annotation.Autowired;
public class SpringService<T> {
@Autowired
private SpringDao<T> dao;
public void save() {
ParameterizedType pt = (ParameterizedType) dao.getClass().getGenericSuperclass();
System.out.println("傳入的泛型 == "+pt.getActualTypeArguments()[0]);
}
}
package com.spring.util;
import org.springframework.stereotype.Component;
@Component
public class User {
}
package com.spring.util;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao extends SpringDao<User>{
}
package com.spring.util;
import org.springframework.stereotype.Service;
@Service
public class UserService extends SpringService<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"
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-4.1.xsd">
<context:component-scan base-package="com.spring" ></context:component-scan>
</beans>