栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将SpringBoot与RESTEasy集成

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将SpringBoot与RESTEasy集成

另一个答案不会像Spring bean那样拥有您的资源,这种自动配置将正确地集成它们:

配置类:

@Configuration@ConditionalOnWebApplicationpublic class RestEasyAutoConfigurer {    private Environment environment;    @Bean(name = "resteasyDispatcher")    public ServletRegistrationBean resteasyServletRegistration() {        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HttpServletDispatcher(), getPrefix()     + "/*");        registrationBean.setInitParameters(ImmutableMap.of("resteasy.servlet.mapping.prefix", "/rs/")); // set prefix here        registrationBean.setLoadonStartup(1);        return registrationBean;    }    @Bean(destroyMethod = "cleanup")    public static RestEasySpringInitializer restEasySpringInitializer() {        return new RestEasySpringInitializer();    }    @Bean    // use Spring Boot configured Jackson    public CustomResteasyJackson2Provider jackson2Provider(ObjectMapper mapper) {        return new CustomResteasyJackson2Provider(mapper);     }    public static class RestEasySpringInitializer implements     ServletContextInitializer,     ApplicationContextAware,     BeanFactoryPostProcessor {        private ResteasyDeployment deployment;        private ConfigurableApplicationContext applicationContext;        private ConfigurableListableBeanFactory beanFactory;        public void cleanup() { deployment.stop();        }        @Override        public void onStartup(ServletContext servletContext) throws ServletException { ListenerBootstrap config = new ListenerBootstrap(servletContext); deployment = config.createDeployment(); deployment.start(); servletContext.setAttribute(ResteasyProviderFactory.class.getName(), deployment.getProviderFactory()); servletContext.setAttribute(Dispatcher.class.getName(), deployment.getDispatcher()); servletContext.setAttribute(Registry.class.getName(), deployment.getRegistry()); SpringBeanProcessor processor = new SpringBeanProcessor(deployment.getDispatcher(),         deployment.getRegistry(), deployment.getProviderFactory()); processor.postProcessBeanFactory(beanFactory); applicationContext.addApplicationListener(processor);        }        @Override        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory;        }        @Override        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = (ConfigurableApplicationContext) applicationContext;        }    }}

和Jackson提供商:

@Provider@Consumes({"application/*+json", "text/json"})@Produces({"application/*+json", "text/json"})public class CustomResteasyJackson2Provider extends ResteasyJackson2Provider {    private ObjectMapper mapper;    public CustomResteasyJackson2Provider(ObjectMapper mapper) {        this.mapper = mapper;    }    @Override    public ObjectMapper locateMapper(Class<?> type, MediaType mediaType) {        return Optional.ofNullable(_mapperConfig.getConfiguredMapper()).orElse(mapper);    }    }

注意:这是Spring Boot 1.3.3 / RESTEasy 3.0.16的有效配置



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/367873.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号