spring总结(七)--注释与spring同时使用的一种方式

本文详细介绍了MyBaseUtils.fetchData方法的工作原理及其内部实现细节。通过分析ServiceMethod注解和反射机制,揭示了该方法如何从指定的Bean中获取方法并执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用背景

MyBaseUtils.fetchData(params, "NLC001");
NLC001是注释的value值

该方法配置的注释

@ServiceMethod("NLC001")
public Map doLogin(Map params) throws Exception {
    ***********
    ***********
}

注释的定义

注意这里的有个一个value值

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ServiceMethod {
    String value() default "";

    boolean isLocal() default false;
}

重点解释下fetchData

核心代码是

Object[] obj = methods.get(txCode);

methods对象类型是Map<String, Object[]>

那么methods是怎么构成的呢

methods.put(sm.value(), new Object[]{context.getBean(beanName), m});

逐个解释

1:sm对象类型是ServiceMethod(注释名称),来自

sm = AnnotationUtils.findAnnotation(m, ServiceMethod.class);

2:m对象类型是Method,来自

ReflectionUtils.getAllDeclaredMethods(beanCls);中的一个值。该方式是获取beanCls中的所有方法(包括子类和所有的超类)

3:beanCls对象类型是Class,来自

context.getType(beanName);

4:beanName对象类型是String,来自

context.getBeanNamesForType(BaseService.class);中的一个值。发方式是获取继承了BaseService类的所有子类和BaseService类的所有bean的名称。

5:context.getBean(beanName),

根据bean名称得到一个实例对象

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋天的猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值