/** * Get ioc bean * * @param cls bean class type * @return return bean instance */ public <T> T getBean(@NonNull Class<T> cls) { return this.ioc.getBean(cls); }
/** * Register bean to ioc container * * @param bean bean object * @return blade */ public Blade register(@NonNull Object bean) { this.ioc.addBean(bean); return this; }
Component component = clazz.getAnnotation(Component.class); if (null != service || null != component) { ioc.addBean(clazz); } else if (null != controller || null != restController) { ioc.addBean(clazz); routeBuilder.addRouter(clazz); } else if (clazz.getSuperclass().getName().equals("com.blade.aop.AbstractMethodInterceptor")) { for (Class<?> in : interfaces) { if (in.equals(Interceptor.class)) { ioc.addBean(clazz); routeBuilder.addInterceptor(clazz); } else if (in.equals(WebContextListener.class)) { Object bean = ioc.addBean(c.getClazz()); ctxs.add((WebContextListener) bean); }); Object bean = ioc.addBean(c.getClazz()); processors.add((BeanProcessor) bean); }); if (null != ioc.getBeans() && !ioc.getBeans().isEmpty()) { LOGGER.info("Add Object: {}", ioc.getBeans()); List<BeanDefine> beanDefines = ioc.getBeanDefines(); if (null != beanDefines) { beanDefines.forEach(b -> IocKit.injection(ioc, b));
@Test public void testFieldInjector(){ Ioc ioc = new SimpleIoc(); ioc.addBean("jack"); ioc.addBean(new BladeBeanDefineType()); Field field = BladeBeanDefineType.class.getDeclaredFields()[0]; FieldInjector fieldInjector = new FieldInjector(ioc, field); fieldInjector.injection(ioc.getBean(BladeBeanDefineType.class)); }
private void initIoc() { RouteMatcher routeMatcher = blade.routeMatcher(); routeMatcher.initMiddleware(blade.middleware()); routeBuilder = new RouteBuilder(routeMatcher); blade.scanPackages().stream() .flatMap(DynamicContext::recursionFindClasses) .map(ClassInfo::getClazz) .filter(ReflectKit::isNormalClass) .forEach(this::parseAndCreate); routeMatcher.register(); this.loaders.stream().sorted(new OrderComparator<>()).forEach(b -> b.preLoad(blade)); this.processors.stream().sorted(new OrderComparator<>()).forEach(b -> b.preHandle(blade)); Ioc ioc = blade.ioc(); if (BladeKit.isNotEmpty(ioc.getBeans())) { log.info("{}Register bean: {}", getStartedSymbol(), ioc.getBeans()); } List<BeanDefine> beanDefines = ioc.getBeanDefines(); if (BladeKit.isNotEmpty(beanDefines)) { beanDefines.forEach(b -> { IocKit.initInjection(ioc, b); IocKit.injectionValue(environment, b); List<TaskStruct> cronExpressions = BladeKit.getTasks(b.getType()); if (null != cronExpressions) { taskStruts.addAll(cronExpressions); } }); } this.loaders.stream().sorted(new OrderComparator<>()).forEach(b -> b.load(blade)); this.processors.stream().sorted(new OrderComparator<>()).forEach(b -> b.processor(blade)); }
@Override public Object load(String controllerName) throws RouteException { String className = basePackage + controllerName; try { // Load controller instance Class<?> controllerClass = classLoader.loadClass(className); Object controller = ioc.getBean(controllerClass); if (null == controller) { ioc.addBean(controllerClass); controller = ioc.getBean(controllerClass); } return controller; } catch (Exception e) { throw new RouteException(e); } }
private void initIoc() { RouteMatcher routeMatcher = blade.routeMatcher(); routeMatcher.initMiddleware(blade.middleware()); routeBuilder = new RouteBuilder(routeMatcher); blade.scanPackages().stream() .flatMap(DynamicContext::recursionFindClasses) .map(ClassInfo::getClazz) .filter(ReflectKit::isNormalClass) .forEach(this::parseAndCreate); routeMatcher.register(); this.loaders.stream().sorted(new OrderComparator<>()).forEach(b -> b.preLoad(blade)); this.processors.stream().sorted(new OrderComparator<>()).forEach(b -> b.preHandle(blade)); Ioc ioc = blade.ioc(); if (BladeKit.isNotEmpty(ioc.getBeans())) { log.info("{}Register bean: {}", getStartedSymbol(), ioc.getBeans()); } List<BeanDefine> beanDefines = ioc.getBeanDefines(); if (BladeKit.isNotEmpty(beanDefines)) { beanDefines.forEach(b -> { IocKit.initInjection(ioc, b); IocKit.injectionValue(environment, b); List<TaskStruct> cronExpressions = BladeKit.getTasks(b.getType()); if (null != cronExpressions) { taskStruts.addAll(cronExpressions); } }); } this.loaders.stream().sorted(new OrderComparator<>()).forEach(b -> b.load(blade)); this.processors.stream().sorted(new OrderComparator<>()).forEach(b -> b.processor(blade)); }
/** * Get ioc bean * * @param cls bean class type * @return return bean instance */ public <T> T getBean(@NonNull Class<T> cls) { return this.ioc.getBean(cls); }
private void initIoc() { RouteMatcher routeMatcher = blade.routeMatcher(); routeMatcher.initMiddleware(blade.middleware()); routeBuilder = new RouteBuilder(routeMatcher); blade.scanPackages().stream() .flatMap(DynamicContext::recursionFindClasses) .map(ClassInfo::getClazz) .filter(ReflectKit::isNormalClass) .forEach(this::parseAndCreate); routeMatcher.register(); this.loaders.stream().sorted(new OrderComparator<>()).forEach(b -> b.preLoad(blade)); this.processors.stream().sorted(new OrderComparator<>()).forEach(b -> b.preHandle(blade)); Ioc ioc = blade.ioc(); if (BladeKit.isNotEmpty(ioc.getBeans())) { log.info("{}Register bean: {}", getStartedSymbol(), ioc.getBeans()); } List<BeanDefine> beanDefines = ioc.getBeanDefines(); if (BladeKit.isNotEmpty(beanDefines)) { beanDefines.forEach(b -> { IocKit.initInjection(ioc, b); IocKit.injectionValue(environment, b); List<TaskStruct> cronExpressions = BladeKit.getTasks(b.getType()); if (null != cronExpressions) { taskStruts.addAll(cronExpressions); } }); } this.loaders.stream().sorted(new OrderComparator<>()).forEach(b -> b.load(blade)); this.processors.stream().sorted(new OrderComparator<>()).forEach(b -> b.processor(blade)); }
/** * Register bean to ioc container * * @param cls bean class, the class must provide a no args constructor * @return blade */ public Blade register(@NonNull Class<?> cls) { this.ioc.addBean(cls); return this; }
@Override public void injection(Object bean) { try { Class<?> fieldType = field.getType(); Object value = ioc.getBean(fieldType); if (value == null) { throw new IllegalStateException("Can't inject bean: " + fieldType.getName() + " for field: " + field); } injection(bean, value); } catch (Exception e) { throw new RuntimeException(e); } }
/** * Register bean to ioc container * * @param bean bean object * @return blade */ public Blade register(@NonNull Object bean) { this.ioc.addBean(bean); return this; }
@Override public void injection(Object bean) { try { Class<?> fieldType = field.getType(); Object value = ioc.getBean(fieldType); if (value == null) { throw new IllegalStateException("Can't inject bean: " + fieldType.getName() + " for field: " + field); } injection(bean, value); } catch (Exception e) { throw new RuntimeException(e); } }
/** * Register bean to ioc container * * @param cls bean class, the class must provide a no args constructor * @return blade */ public Blade register(@NonNull Class<?> cls) { this.ioc.addBean(cls); return this; }
/** * Register bean to ioc container * * @param bean bean object * @return blade */ public Blade register(@NonNull Object bean) { this.ioc.addBean(bean); return this; }
/** * Register bean to ioc container * * @param cls bean class, the class must provide a no args constructor * @return blade */ public Blade register(@NonNull Class<?> cls) { this.ioc.addBean(cls); return this; }
private boolean invokeMiddleware(List<Route> middleware, RouteContext context) throws BladeException { if (BladeKit.isEmpty(middleware)) { return true; } for (Route route : middleware) { WebHook webHook = (WebHook) WebContext.blade().ioc().getBean(route.getTargetType()); boolean flag = webHook.before(context); if (!flag) return false; } return true; }
private boolean invokeMiddleware(List<Route> middleware, RouteContext context) throws BladeException { if (BladeKit.isEmpty(middleware)) { return true; } for (Route route : middleware) { WebHook webHook = (WebHook) WebContext.blade().ioc().getBean(route.getTargetType()); boolean flag = webHook.before(context); if (!flag) return false; } return true; }