@DS注解未生效
klaus-cicd opened this issue · 3 comments
klaus-cicd commented
Please fill it out carefully, or it will be closed.
请认真填写,不然会直接关闭。
Enviroment
JDK Version(required): 1.8
SpringBoot Version(required): 2.4.1
dynamic-datasource-spring-boot-starter Version(required): 4.2.0
druid Version(optional): 1.2.16
Describe what happened
- yml配置内已经配置两个数据源,一个是key叫mysql,另一个叫tdengine,primaryKey为mysql
- 编写了一个工具类,该工具类内注入了NamedParameterJdbcTemplate对象去执行SQL,在该工具类上加入了@ds("tdengine")注解
- 但是在执行该类的方法时,AOP未生效(没有进入DynamicDataSourceAnnotationInterceptor#invoke),导致
DynamicDataSourceContextHolder.peek()
的结果为null,导致namedParameterJdbcTemplate对象获取到的是mysql的数据源,进而导致结果异常
Expected Result:
AOP正常生效,进入DynamicDataSourceAnnotationInterceptor
Actual Result:
AOP失效,未执行DynamicDataSourceAnnotationInterceptor#invoke
If there is an exception,or aop invalid,please attach the exception trace:
Just paste your stack trace here!
Steps to reproduce
-
Step 1
-
Step 2
-
Step 3
huayanYu commented
你需要百度AOP常见失效原因, 提问也不贴工具类啥样,注解在了哪。
klaus-cicd commented
你需要百度AOP常见失效原因, 提问也不贴工具类啥样,注解在了哪。
@Slf4j
@DS(TDengineUtil.DS_TDENGINE)
public class TDengineUtil {
public static final String DS_TDENGINE = "tdengine";
@Getter
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
private static NamedParameterJdbcTemplate STATIC_NAMED_PARAMETER_JDBC_TEMPLATE;
private static JdbcTemplateUtil STATIC_JDBC_TEMPLATE_UTIL;
private final JdbcTemplateUtil jdbcTemplateUtil;
private final SpringContextHolder springContextHolder;
public TDengineUtil(NamedParameterJdbcTemplate namedParameterJdbcTemplate, SpringContextHolder springContextHolder, JdbcTemplateUtil jdbcTemplateUtil) {
this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
this.springContextHolder = springContextHolder;
this.jdbcTemplateUtil = jdbcTemplateUtil;
STATIC_NAMED_PARAMETER_JDBC_TEMPLATE = namedParameterJdbcTemplate;
STATIC_JDBC_TEMPLATE_UTIL = jdbcTemplateUtil;
}
public static int insertUsing(Object object) {
return insertUsing(object, new DefaultDynamicNameStrategy());
}
...
}
huayanYu commented
你需要百度AOP常见失效原因,谁教的AOP可以这么用