private <C extends Component> C injectAspects(final C instance, final Class implClass) { //2. AOP , a new instance is created when aspects are injected in the previous instance final Map<Method, List<Aspect>> joinPoints = ComponentAspectUtil.createAspectsByMethod(implClass, aspects); if (!joinPoints.isEmpty()) { return aopPlugin.wrap(instance, joinPoints); } return instance; }