Spring Boot中基于​​URL的数据源路由

时间:2015-09-14 17:40:52

标签: spring spring-mvc spring-boot spring-data-rest

我正在使用spring boot和spring数据休息来处理多租户应用,所以当用户输入url http://app/dbn_name时,应用应该使用URL中指定的数据库,所有数据库都具有相同的数据库架构,所以问题是根据URL选择数据库,添加数据库的过程也应由最终用户完成,因此添加数据库应该动态完成,目前我正在应用程序中存储数据库访问信息。属性。

我发现了一个solution,但它已经老了,不适应弹簧靴,有没有适合弹簧靴的建议。

这是我的AppConfig.java

@EnableAutoConfiguration(exclude = {
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class})
@ComponentScan(basePackages = { "com.geopro" })
@EnableJpaRepositories(basePackages = { "com.geopro.repositories" })
@EntityScan(basePackages = { "com.geopro.entities" })
@Import({ SecurityConfig.class , RepositoryConfig.class }) //
@EnableTransactionManagement
public class AppConfig {
    @Bean
    public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
         HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
         factory.setEntityManagerFactory(emf);
         return factory;
    }
}

CORS过滤器:

@Component
public class SimpleCORSFilter implements Filter {

        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
                HttpServletResponse response = (HttpServletResponse) res;
                response.setHeader("Access-Control-Allow-Origin", "*");

                response.setHeader("Access-Control-Allow-Methods", "PUT, POST, GET, OPTIONS, DELETE");
                response.setHeader("Access-Control-Max-Age", "1728000");

                response.setHeader("X-Frame-Options", "ALLOW-FROM  http://localhost:1841/geopro/");//ALLOW-FROM  http://localhost:1841/geopro/
                response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Content-Length, X-Requested-With, Cache-Control");
                 chain.doFilter(req, res);

        }

        public void init(FilterConfig filterConfig) {}

        public void destroy() {}

}

0 个答案:

没有答案