Java动态代理实战(二):dao接口无实现类且自动注册到Spring容器

7 篇文章 1 订阅

接前一篇文章

Java动态代理实战(一):在Spring中实现代理接口无实现类注入

 

自动注册到spring容器代码

//注意需要配置让Spring能扫描到此路径
@Component
public class ProxyDaoRegister implements ApplicationContextAware, BeanDefinitionRegistryPostProcessor {

	@Override
	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

	}

	@Override
	public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
		// 需要被代理的接口
        Class<?> cls = UserTestDao.class;
        BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(cls);
        GenericBeanDefinition definition = (GenericBeanDefinition) builder.getRawBeanDefinition();
        //这里是相当于调用BaseDaoProxyFactory中的setInterfaceClass()方法,详细的可以了解spring相关资料
        definition.getPropertyValues().add("interfaceClass", definition.getBeanClassName());
        // FactoryBean是一种特殊的Bean,这里的BeanClass是生成Bean实例的工厂,不是Bean本身。其返回的是该工厂Bean的getObject方法所返回的对象。
        definition.setBeanClass(BaseDaoProxyFactory.class);
        definition.setAutowireMode(GenericBeanDefinition.AUTOWIRE_BY_TYPE);
        // 注册dao
        registry.registerBeanDefinition("userTestDao", definition);
	}

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

	}
}

使用方式:直接使用@Autowired注入就可以

@Service("userTestService")
public class UserTestServiceImpl {
	@Autowired
	private UserTestDao testDao;
	
	public void test() {
		testDao.delete(1l);
	}
}

下一篇文章:Java动态代理实战(三):dao接口无实现类且使用注解自动注册

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值