Commit 1eb72cce37206063bbc206b9f91aff3bc715e3e0

Authored by litao
1 parent 1fadabe078

公共配置抽取

Showing 6 changed files with 79 additions and 9 deletions

regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java View file @ 1eb72cc
1 1 package com.lyms.etl;
2 2  
3 3 import com.lyms.etl.service.IInvokeHandler;
  4 +import com.lyms.etl.util.AopTargetUtil;
4 5 import org.mybatis.spring.annotation.MapperScan;
5 6 import org.slf4j.Logger;
6 7 import org.slf4j.LoggerFactory;
7 8  
... ... @@ -30,14 +31,13 @@
30 31  
31 32 public static void main(String[] args) {
32 33 SpringApplication.run(ApplicationRunner.class, args);
33   - log.info("etl started......");
34 34 }
35 35  
36 36 @Override
37 37 public void run(String... strings) throws Exception {
38 38 for (IInvokeHandler handler : invokeHandlers) {
39 39 Date start = new Date();
40   - log.info("start ................ {}", handler.getClass().getName());
  40 + log.info("start ................ {}", AopTargetUtil.getTarget(handler).getClass().getName());
41 41 handler.invoke();
42 42 log.info("end ................ used: {} ms", System.currentTimeMillis() - start.getTime());
43 43 }
regional-etl/src/main/java/com/lyms/etl/service/impl/CouponServiceImpl.java View file @ 1eb72cc
... ... @@ -130,8 +130,7 @@
130 130  
131 131 @Override
132 132 public void invoke() {
133   -// transferCoupon();
134   - System.err.println("xxxxxxxxxxxxxxxxx");
  133 + transferCoupon();
135 134 }
136 135 }
regional-etl/src/main/java/com/lyms/etl/util/AopTargetUtil.java View file @ 1eb72cc
  1 +package com.lyms.etl.util;
  2 +
  3 +import org.springframework.aop.framework.AdvisedSupport;
  4 +import org.springframework.aop.framework.AopProxy;
  5 +import org.springframework.aop.support.AopUtils;
  6 +
  7 +import java.lang.reflect.Field;
  8 +
  9 +/**
  10 + * spring自动注入的对象 通过getClass()获取到的是proxy对象
  11 + * 通过此类获取到真实对象
  12 + * @Author: litao
  13 + * @Date: 2017/5/6 0006 11:21
  14 + * @Version: V1.0
  15 + */
  16 +public class AopTargetUtil {
  17 + /**
  18 + * 获取 目标对象
  19 + * @param proxy 代理对象
  20 + * @return
  21 + * @throws Exception
  22 + */
  23 + public static Object getTarget(Object proxy) {
  24 + if(!AopUtils.isAopProxy(proxy)) {
  25 + return proxy;//不是代理对象
  26 + }
  27 +
  28 + if(AopUtils.isJdkDynamicProxy(proxy)) {
  29 + return getJdkDynamicProxyTargetObject(proxy);
  30 + } else { //cglib
  31 + return getCglibProxyTargetObject(proxy);
  32 + }
  33 + }
  34 +
  35 +
  36 + private static Object getCglibProxyTargetObject(Object proxy) {
  37 + Object target = null;
  38 + try {
  39 + Field h = proxy.getClass().getDeclaredField("CGLIB$CALLBACK_0");
  40 + h.setAccessible(true);
  41 + Object dynamicAdvisedInterceptor = h.get(proxy);
  42 +
  43 + Field advised = dynamicAdvisedInterceptor.getClass().getDeclaredField("advised");
  44 + advised.setAccessible(true);
  45 +
  46 + target = ((AdvisedSupport)advised.get(dynamicAdvisedInterceptor)).getTargetSource().getTarget();
  47 + } catch (Exception e) {
  48 +
  49 + }
  50 + return target;
  51 + }
  52 +
  53 +
  54 + private static Object getJdkDynamicProxyTargetObject(Object proxy) {
  55 + Object target = null;
  56 + try {
  57 + Field h = proxy.getClass().getSuperclass().getDeclaredField("h");
  58 + h.setAccessible(true);
  59 + AopProxy aopProxy = (AopProxy) h.get(proxy);
  60 + Field advised = aopProxy.getClass().getDeclaredField("advised");
  61 + advised.setAccessible(true);
  62 + target = ((AdvisedSupport)advised.get(aopProxy)).getTargetSource().getTarget();
  63 + } catch (Exception e) {
  64 + }
  65 + return target;
  66 + }
  67 +
  68 +}
regional-etl/src/main/resources/application-prod.yml View file @ 1eb72cc
... ... @@ -12,6 +12,7 @@
12 12 database: platform
13 13 username: platform
14 14 password: platform123
15   - profiles:
16   - active: etl
  15 +
  16 +server:
  17 + port: 9999
regional-etl/src/main/resources/application.properties View file @ 1eb72cc
1   -server.port=8089
2   -
3 1 # druid
4 2 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
5 3 spring.datasource.initialSize=5
... ... @@ -23,5 +21,5 @@
23 21 mybatis.typeAliasesPackage=com.lyms.etl.model
24 22 mybatis.mapperLocations=classpath:mappers/*.xml
25 23  
26   -spring.profiles.active=prod,etl
  24 +spring.profiles.active=prod, etl
regional-etl/src/main/resources/application.yml View file @ 1eb72cc
... ... @@ -12,4 +12,8 @@
12 12 database: platform
13 13 username: platform
14 14 password: platform123
  15 + profiles:
  16 + active: coupon
  17 +server:
  18 + port: 8888