Browse Source

修复动态加载的流程无法使用@Value问题

airhead 7 years ago
parent
commit
f75f452213

+ 2 - 0
hos-broker/src/main/java/com/yihu/hos/broker/HosBrokerApplication.java

@ -9,6 +9,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.mongodb.gridfs.GridFsOperations;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@ -19,6 +20,7 @@ import java.util.concurrent.Executors;
@EnableScheduling
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
@EnableAsync
@ComponentScan(value={"com.yihu.hos.broker","camel"})
//@EnableEurekaClient
public class HosBrokerApplication extends SpringBootServletInitializer implements CommandLineRunner {
    @Autowired

+ 8 - 1
hos-broker/src/main/java/com/yihu/hos/broker/services/camel/CamelStartBoot.java

@ -10,7 +10,9 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.net.URL;
import java.net.URLClassLoader;
@ -29,6 +31,9 @@ public class CamelStartBoot {
    private BrokerServerService brokerServerService;
    private CamelContext context = SystemCamelContext.getContext();
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;
    @Autowired
    public void setBrokerServerService(BrokerServerService brokerServerService) {
        this.brokerServerService = brokerServerService;
@ -47,7 +52,7 @@ public class CamelStartBoot {
            ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
            ClassLoader camelClassLoader = new URLClassLoader(URLs.toArray(new URL[]{}), currentClassLoader);
            Thread.currentThread().setContextClassLoader(camelClassLoader);
            context.setApplicationContextClassLoader(camelClassLoader);
            context.setApplicationContextClassLoader(currentClassLoader);
            logger.info("Apache Camel Context 启动完成...");
@ -61,6 +66,8 @@ public class CamelStartBoot {
                    Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) camelClassLoader.loadClass(className);
                    if (routeBuilderClass != null) {
                        RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                        capableBeanFactory.autowireBean(routeBuilder);
                        context.addRoutes(routeBuilder);
                    }
                } catch (ClassNotFoundException e) {

+ 1 - 1
hos-parent/pom.xml

@ -13,7 +13,7 @@
        <hos-version>1.3.0</hos-version>
        <spring-boot-version>1.4.5.RELEASE</spring-boot-version>
        <spring-cloud-version>1.2.6.RELEASE</spring-cloud-version>
        <camel-version>2.18.3</camel-version>
        <camel-version>2.19.1</camel-version>
        <cxf-version>3.1.9</cxf-version>
        <hawtio-version>1.5.0</hawtio-version>