在本文中,您将会了解到关于NoSuchMethodException:org.springframework.boot.autoconfigure.http.HttpMessageConverters
在本文中,您将会了解到关于NoSuchMethodException:org.springframework.boot.autoconfigure.http.HttpMessageConverters的新资讯,并给出一些关于Java-Class-C:org.springframework.http.converter.StringHttpMessageConverter、java.lang.ClassNotFoundException:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter、org.springframework.boot.actuate.autoconfigure.ManagementServerPropertiesAutoConfiguration的实例源码、org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration的实例源码的实用技巧。
本文目录一览:- NoSuchMethodException:org.springframework.boot.autoconfigure.http.HttpMessageConverters
- Java-Class-C:org.springframework.http.converter.StringHttpMessageConverter
- java.lang.ClassNotFoundException:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
- org.springframework.boot.actuate.autoconfigure.ManagementServerPropertiesAutoConfiguration的实例源码
- org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration的实例源码
NoSuchMethodException:org.springframework.boot.autoconfigure.http.HttpMessageConverters
我想用Hibernate配置Spring应用程序。我尝试了这个:
主要启动方式:
@Configuration@EnableWebMvcpublic class WebConfig implements WebApplicationInitializer, WebMvcConfigurer { private BasicAuthenticationInterceptor basicAuthenticationInterceptor; @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { converters.removeIf(converter -> converter instanceof MappingJackson2XmlHttpMessageConverter); converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter); converters.add(new MappingJackson2XmlHttpMessageConverter( ((XmlMapper) createObjectMapper(Jackson2ObjectMapperBuilder.xml())) .enable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION))); converters.add(new MappingJackson2HttpMessageConverter( createObjectMapper(Jackson2ObjectMapperBuilder.json()))); } private ObjectMapper createObjectMapper(Jackson2ObjectMapperBuilder builder) { builder.indentOutput(true); builder.modules(new JaxbAnnotationModule()); builder.serializationInclusion(JsonInclude.Include.NON_NULL); builder.defaultUseWrapper(false); return builder.build(); } @Override public void onStartup(ServletContext container) { // Create the ''root'' Spring application context AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); rootContext.register(ContextDatasource.class); // Manage the lifecycle of the root application context container.addListener(new ContextLoaderListener(rootContext)); // Create the dispatcher servlet''s Spring application context AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext(); // Register and map the dispatcher servlet ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } @Autowired public void setBasicAuthenticationInterceptor(BasicAuthenticationInterceptor basicAuthenticationInterceptor) { this.basicAuthenticationInterceptor = basicAuthenticationInterceptor; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(basicAuthenticationInterceptor); }}
从rootContext.register(ContextDatasource.class);
以下位置调用的Hibernate配置:
@SpringBootApplication@Configuration@EnableTransactionManagementpublic class ContextDatasource { @Bean public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() { return new FastJsonHttpMessageConverter(); } @Bean @Autowired public HttpMessageConverters convertersToBeUsed(FastJsonHttpMessageConverter converter) { return new HttpMessageConverters(converter); } @Bean public LocalSessionFactoryBean getSessionFactory() throws NamingException { final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(getDataSource()); sessionFactory.setPackagesToScan(new String[] { "org.datalis.plugin.database.models" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean public DataSource getDataSource() throws NamingException { return (DataSource) new JndiTemplate().lookup("java:/global/production_gateway"); } @Bean public PlatformTransactionManager getHibernateTransactionManager() throws NamingException { final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); transactionManager.setSessionFactory(getSessionFactory().getObject()); return transactionManager; } @Bean public PersistenceExceptionTranslationPostProcessor getExceptionTranslation() { return new PersistenceExceptionTranslationPostProcessor(); } private final Properties hibernateProperties() { final Properties hibernateProperties = new Properties(); hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MariaDBDialect"); hibernateProperties.setProperty("hibernate.show_sql", "true"); hibernateProperties.setProperty("hibernate.format_sql", "true"); return hibernateProperties; }}
但是,当我部署WAR文件时,出现错误:
Caused by: java.lang.NoSuchMethodException: org.springframework.boot.autoconfigure.http.HttpMessageConverters$$EnhancerBySpringCGLIB$$1d90bff9.<init>() at java.base/java.lang.Class.getConstructor0(Class.java:3302)
完整的错误堆栈:https :
//pastebin.com/x30W2aws
您可以在我错的地方提供建议以及如何解决该问题吗?我是否需要使用其他配置来实现模块启动?
编辑:使用Java 8,代码可以正常工作而没有上述问题。在最新的Java 10中,我遇到了上述异常。您知道我需要做什么配置吗?
答案1
小编典典根据Spring Boot发行说明,Spring
Boot 2.0.1及更高版本支持Java 10。没有依赖项列表,就不可能知道这是否是问题所在,但这似乎是一个不错的起点。
您是否正在运行Boot v2.0.1或更高版本?
Java-Class-C:org.springframework.http.converter.StringHttpMessageConverter
ylbtech-Java-Class-C:org.springframework.http.converter.StringHttpMessageConverter |
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.springframework.http.converter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.StreamUtils;
public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {
public static final Charset DEFAULT_CHARSET;
@Nullable
private volatile List<Charset> availableCharsets;
private boolean writeAcceptCharset;
public StringHttpMessageConverter() {
this(DEFAULT_CHARSET);
}
public StringHttpMessageConverter(Charset defaultCharset) {
super(defaultCharset, new MediaType[]{MediaType.TEXT_PLAIN, MediaType.ALL});
this.writeAcceptCharset = true;
}
public void setWriteAcceptCharset(boolean writeAcceptCharset) {
this.writeAcceptCharset = writeAcceptCharset;
}
public boolean supports(Class<?> clazz) {
return String.class == clazz;
}
protected String readInternal(Class<? extends String> clazz, HttpInputMessage inputMessage) throws IOException {
Charset charset = this.getContentTypeCharset(inputMessage.getHeaders().getContentType());
return StreamUtils.copyToString(inputMessage.getBody(), charset);
}
protected Long getContentLength(String str, @Nullable MediaType contentType) {
Charset charset = this.getContentTypeCharset(contentType);
return (long)str.getBytes(charset).length;
}
protected void writeInternal(String str, HttpOutputMessage outputMessage) throws IOException {
HttpHeaders headers = outputMessage.getHeaders();
if (this.writeAcceptCharset && headers.get("Accept-Charset") == null) {
headers.setAcceptCharset(this.getAcceptedCharsets());
}
Charset charset = this.getContentTypeCharset(headers.getContentType());
StreamUtils.copy(str, charset, outputMessage.getBody());
}
protected List<Charset> getAcceptedCharsets() {
List<Charset> charsets = this.availableCharsets;
if (charsets == null) {
charsets = new ArrayList(Charset.availableCharsets().values());
this.availableCharsets = (List)charsets;
}
return (List)charsets;
}
private Charset getContentTypeCharset(@Nullable MediaType contentType) {
if (contentType != null && contentType.getCharset() != null) {
return contentType.getCharset();
} else if (contentType != null && contentType.isCompatibleWith(MediaType.APPLICATION_JSON)) {
return StandardCharsets.UTF_8;
} else {
Charset charset = this.getDefaultCharset();
Assert.state(charset != null, "No default charset");
return charset;
}
}
static {
DEFAULT_CHARSET = StandardCharsets.ISO_8859_1;
}
}

出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java.lang.ClassNotFoundException:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
我在项目中使用spring-integration。在码头容器中部署应用程序时,出现以下异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''integrationRequestMappingHandlerMapping'': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''inboundhttpJobRequestGateway'': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingJackson2HttpMessageConverter at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) at com.dsths.spring.web.DsthsContextLoaderListener.configureAndRefreshWebApplicationContext(DsthsContextLoaderListener.java:97) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771) at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411) at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at com.dsths.common.container.core.deploy.DeploymentManager.deploy(DeploymentManager.java:54) at com.dsths.common.container.core.deploy.DeploymentManager$$FastClassByCGLIB$$f5bc43eb.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:95) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''inboundhttpJobRequestGateway'': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingJackson2HttpMessageConverter at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:288) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093) at org.springframework.integration.http.inbound.IntegrationRequestMappingHandlerMapping.detectHandlerMethods(IntegrationRequestMappingHandlerMapping.java:103) at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:109) at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initApplicationContext(AbstractHandlerMethodMapping.java:89) at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119) at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:72) at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73) at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:117) at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1448) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ... 29 moreCaused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingJackson2HttpMessageConverter at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:110) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:280) ... 49 moreCaused by: java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingJackson2HttpMessageConverter at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.<init>(HttpRequestHandlingEndpointSupport.java:166) at org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway.<init>(HttpRequestHandlingMessagingGateway.java:72) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ... 51 moreCaused by: java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJackson2HttpMessageConverter at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.dsths.common.container.ContainerClassLoader.loadClass(ContainerClassLoader.java:136) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:429) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:382) ... 58 more
我有两个罐子jackson-core-asl-1.8.3
,并jackson-core-2.3.1
在类路径中。仍然我得到错误。如何解决问题?
答案1
小编典典有趣的是com.dsths.common.container.ContainerClassLoader
…
看起来像是spring-integration-http
由这个加载的ClassLoader
,但是MappingJackson2HttpMessageConverter
和其他所有spring-web
类都带有另一个ClassLoader
。
如果将所有弹簧罐放在同一个类加载器中,那就太好了。
该应用程序无法在类路径中找到MappingJackson2HttpMessageConverter。问题是一个类加载器正在选择一个版本,而另一个类加载器正在选择另一个版本。
org.springframework.boot.actuate.autoconfigure.ManagementServerPropertiesAutoConfiguration的实例源码
@Before public void createContext() { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(JacksonAutoConfiguration.class,HttpMessageConvertersAutoConfiguration.class,EndpointAutoConfiguration.class,EndpointWebMvcAutoConfiguration.class,ManagementServerPropertiesAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class,JolokiaAutoConfiguration.class,WebMvcAutoConfiguration.class); }
@Before public void createContext() { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(JacksonAutoConfiguration.class,WebMvcAutoConfiguration.class); }
@Before public void createContext() { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(JacksonAutoConfiguration.class,WebMvcAutoConfiguration.class); }
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration的实例源码
@Before public void init() { dbUrl = "h2:mem:testdb-" + new Random().nextInt(); EnvironmentTestUtils.addEnvironment(context,"spring.datasource.initialize:false","spring.datasource.url:jdbc:" + dbUrl); context.setClassLoader(new HidePackagesClassLoader("com.vladmihalcea.flexypool","net.ttddyy.dsproxy")); context.register(DataSourceAutoConfiguration.class,DataSourceDecoratorAutoConfiguration.class,TraceAutoConfiguration.class,SleuthLogAutoConfiguration.class,SleuthListenerAutoConfiguration.class,SavingSpanReporterConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); dataSource = context.getBean(DataSource.class); spanReporter = context.getBean(CollectingSpanReporter.class); }
@Before public void init() { dbUrl = "h2:mem:testdb-" + new Random().nextInt(); EnvironmentTestUtils.addEnvironment(context,"com.p6spy")); context.register(DataSourceAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); dataSource = context.getBean(DataSource.class); spanReporter = context.getBean(CollectingSpanReporter.class); }
@Test public void testAddsDatasourceProxyListener() { context.setClassLoader(new HidePackagesClassLoader("com.vladmihalcea.flexypool",PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); ProxyDataSource proxyDataSource = (ProxyDataSource) ((DecoratedDataSource) dataSource).getDecoratedDataSource(); ChainListener chainListener = proxyDataSource.getProxyConfig().getQueryListener(); assertthat(chainListener.getListeners()).extracting("class").contains(TracingQueryExecutionListener.class); }
@Test public void testDecoratedHikariSpecificPropertiesIsSet() throws Exception { EnvironmentTestUtils.addEnvironment(context,"spring.datasource.type:" + HikariDataSource.class.getName(),"spring.datasource.hikari.catalog:test_catalog"); context.register(DataSourceAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); assertthat(dataSource).isNotNull(); assertthat(dataSource).isinstanceOf(DecoratedDataSource.class); DataSource realDataSource = ((DecoratedDataSource) dataSource).getRealDataSource(); assertthat(realDataSource).isinstanceOf(HikariDataSource.class); assertthat(((HikariDataSource) realDataSource).getCatalog()).isEqualTo("test_catalog"); }
@Test public void testCustomDataSourceDecoratorApplied() throws Exception { System.setProperty(PropertyLoader.PROPERTIES_FILE_PATH,"db/decorator/flexy-pool.properties"); context.register(TestDataSourceDecoratorConfiguration.class,DataSourceAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); assertthat(dataSource).isNotNull(); DataSource customDataSource = ((DecoratedDataSource) dataSource).getDecoratedDataSource(); assertthat(customDataSource).isinstanceOf(CustomDataSourceProxy.class); DataSource realDataSource = ((DecoratedDataSource) dataSource).getRealDataSource(); assertthat(realDataSource).isinstanceOf(org.apache.tomcat.jdbc.pool.DataSource.class); assertthatDataSourceDecoratingChain(dataSource).containsExactly(CustomDataSourceProxy.class,P6DataSource.class,ProxyDataSource.class,FlexyPoolDataSource.class); }
@Test public void testDecoratingCanBedisabledForSpecificBeans() throws Exception { EnvironmentTestUtils.addEnvironment(context,"decorator.datasource.exclude-beans:secondDataSource"); context.register(TestMultiDataSourceConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean("dataSource",DataSource.class); assertthat(dataSource).isinstanceOf(DecoratedDataSource.class); DataSource secondDataSource = context.getBean("secondDataSource",DataSource.class); assertthat(secondDataSource).isinstanceOf(BasicDataSource.class); }
@Test public void testDecoratingHikariDataSourceWithDefaultStrategies() throws Exception { EnvironmentTestUtils.addEnvironment(context,"spring.datasource.type:" + HikariDataSource.class.getName()); context.register(DataSourceAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); assertDataSourceOfType(dataSource,HikariDataSource.class); FlexyPoolDataSource<HikariDataSource> flexyPoolDataSource = assertDataSourceOfType(dataSource,HikariDataSource.class); IncrementPoolOnTimeoutConnectionAcquiringStrategy strategy1 = findStrategy(flexyPoolDataSource,IncrementPoolOnTimeoutConnectionAcquiringStrategy.class); assertthat(strategy1).isNotNull(); assertthat(strategy1).hasFieldOrPropertyWithValue("maxOverflowPoolSize",15); assertthat(strategy1).hasFieldOrPropertyWithValue("timeoutMillis",500); RetryConnectionAcquiringStrategy strategy2 = findStrategy(flexyPoolDataSource,RetryConnectionAcquiringStrategy.class); assertthat(strategy2).isNotNull(); assertthat(strategy2).hasFieldOrPropertyWithValue("retryAttempts",2); }
@Test public void testDecoratingHikariDataSourceWithCustomPropertyStrategies() throws Exception { EnvironmentTestUtils.addEnvironment(context,"decorator.datasource.flexy-pool.acquiring-strategy.increment-pool.max-overflow-pool-size:15","decorator.datasource.flexy-pool.acquiring-strategy.increment-pool.timeout-millis:500","decorator.datasource.flexy-pool.acquiring-strategy.retry.attempts:5"); context.register(DataSourceAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class,HikariConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); FlexyPoolDataSource<HikariDataSource> flexyPoolDataSource = assertDataSourceOfType(dataSource,35); assertthat(strategy1).hasFieldOrPropertyWithValue("timeoutMillis",10000); RetryConnectionAcquiringStrategy strategy2 = findStrategy(flexyPoolDataSource,5); }
@Test public void providesCollectorComponent_whenBootstrapServeRSSet() { addEnvironment(context,"zipkin.sparkstreaming.stream.kafka.bootstrap-servers:" + KAFKA_BOOTSTRAP ); context.register( PropertyPlaceholderAutoConfiguration.class,ZipkinKafkaStreamFactoryAutoConfiguration.class ); context.refresh(); ZipkinKafkaStreamFactoryProperties props = context.getBean(ZipkinKafkaStreamFactoryProperties.class); assertthat(props.getBootstrapServers()) .containsExactly(KAFKA_BOOTSTRAP); }
@Test public void providesCollectorComponent_whenKafkaZookeeperSet() { addEnvironment(context,"zipkin.sparkstreaming.stream.kafka.zookeeper.connect:" + KAFKA_ZOOKEEPER ); context.register( PropertyPlaceholderAutoConfiguration.class,ZipkinKafkaStreamFactoryAutoConfiguration.class ); context.refresh(); ZipkinKafkaStreamFactoryProperties props = context.getBean(ZipkinKafkaStreamFactoryProperties.class); assertthat(props.getZookeeper().getConnect()) .isEqualTo(KAFKA_ZOOKEEPER); }
@Test public void provideCollectorComponent_setsZipkinSqsCollectorProperties() { context = new AnnotationConfigApplicationContext(); addEnvironment(context,"zipkin.collector.sqs.queue-url:" + sqsRule.queueUrl()); addEnvironment(context,"zipkin.collector.sqs.wait-time-seconds:1"); addEnvironment(context,"zipkin.collector.sqs.parallelism:3"); addEnvironment(context,"zipkin.collector.sqs.aws-access-key-id: x"); addEnvironment(context,"zipkin.collector.sqs.aws-secret-access-key: x"); context.register(PropertyPlaceholderAutoConfiguration.class,Region.class,ZipkinSQSCollectorAutoConfiguration.class,ZipkinSQSCredentialsAutoConfiguration.class,InMemoryConfiguration.class); context.refresh(); ZipkinSQSCollectorProperties properties = context.getBean(ZipkinSQSCollectorProperties.class); assertthat(properties.getQueueUrl()).isEqualTo(sqsRule.queueUrl()); assertthat(properties.getWaitTimeSeconds()).isEqualTo(1); assertthat(properties.getParallelism()).isEqualTo(3); }
@Test public void provideSecurityTokenService_whenAwsstsRoleArnIsSet() { context = new AnnotationConfigApplicationContext(); addEnvironment(context,"zipkin.collector.sqs.aws-secret-access-key: x"); addEnvironment(context,"zipkin.collector.sqs.aws-sts-role-arn: test"); context.register(PropertyPlaceholderAutoConfiguration.class,InMemoryConfiguration.class); context.refresh(); assertthat(context.getBean(SQSCollector.class)).isNotNull(); assertthat(context.getBean(AWSSecurityTokenService.class)).isNotNull(); assertthat(context.getBean(AWSCredentialsProvider.class)).isinstanceOf(STSAssumeRoleSessionCredentialsProvider.class); }
@Test public void testWithConfigurationVariablesAndPropertiesOtherKey() { TestPropertyValues.of( "mybatis.configuration.variables.key1:value1","mybatis.configuration-properties.key2:value2") .applyTo(this.context); this.context.register(EmbeddedDataSourceConfiguration.class,MybatisAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); Properties variables = this.context.getBean(sqlSessionFactory.class).getConfiguration().getvariables(); assertthat(variables).hasSize(2); assertthat(variables.getProperty("key1")).isEqualTo("value1"); assertthat(variables.getProperty("key2")).isEqualTo("value2"); }
@Test public void defaultsToV2Endpoint() throws Exception { context = new AnnotationConfigApplicationContext(); addEnvironment(context,"spring.zipkin.base-url:" + server.url("/")); context.register( PropertyPlaceholderAutoConfiguration.class,TraceMetricsAutoConfiguration.class,ZipkinAutoConfiguration.class); context.refresh(); SpanReporter spanReporter = context.getBean(SpanReporter.class); spanReporter.report(span); Awaitility.await().untilAsserted(() -> then(server.getRequestCount()).isGreaterThan(0)); RecordedRequest request = server.takeRequest(); then(request.getPath()).isEqualTo("/api/v2/spans"); then(request.getBody().readUtf8()).contains("localEndpoint"); }
@Test public void encoderDirectsEndpoint() throws Exception { context = new AnnotationConfigApplicationContext(); addEnvironment( context,"spring.zipkin.base-url:" + server.url("/"),"spring.zipkin.encoder:JSON_V1"); context.register( PropertyPlaceholderAutoConfiguration.class,ZipkinAutoConfiguration.class); context.refresh(); SpanReporter spanReporter = context.getBean(SpanReporter.class); spanReporter.report(span); Awaitility.await().untilAsserted(() -> then(server.getRequestCount()).isGreaterThan(0)); RecordedRequest request = server.takeRequest(); then(request.getPath()).isEqualTo("/api/v1/spans"); then(request.getBody().readUtf8()).contains("binaryAnnotations"); }
@Test public void overrideRabbitMQQueue() throws Exception { context = new AnnotationConfigApplicationContext(); addEnvironment(context,"spring.zipkin.rabbitmq.queue:zipkin2"); context.register( PropertyPlaceholderAutoConfiguration.class,RabbitAutoConfiguration.class,ZipkinAutoConfiguration.class); context.refresh(); SpanReporter spanReporter = context.getBean(SpanReporter.class); assertthat(spanReporter).extracting("reporter.sender.queue") .contains("zipkin2"); context.close(); }
@Test public void overrideKafkaTopic() throws Exception { context = new AnnotationConfigApplicationContext(); addEnvironment(context,"spring.zipkin.kafka.topic:zipkin2"); context.register( PropertyPlaceholderAutoConfiguration.class,KafkaAutoConfiguration.class,ZipkinAutoConfiguration.class); context.refresh(); SpanReporter spanReporter = context.getBean(SpanReporter.class); assertthat(spanReporter).extracting("reporter.sender.topic") .contains("zipkin2"); context.close(); }
@Test public void canOverrideBySender() throws Exception { context = new AnnotationConfigApplicationContext(); addEnvironment(context,"spring.zipkin.sender.type:web"); context.register( PropertyPlaceholderAutoConfiguration.class,ZipkinAutoConfiguration.class); context.refresh(); SpanReporter spanReporter = context.getBean(SpanReporter.class); assertthat(spanReporter).extracting("reporter.sender").allSatisfy( s -> assertthat(s.getClass().getSimpleName()).isEqualTo("RestTemplateSender") ); context.close(); }
@Test public void rabbitWinsWhenKafkaPresent() throws Exception { context = new AnnotationConfigApplicationContext(); context.register( PropertyPlaceholderAutoConfiguration.class,ZipkinAutoConfiguration.class); context.refresh(); SpanReporter spanReporter = context.getBean(SpanReporter.class); assertthat(spanReporter).extracting("reporter.sender") .allSatisfy(s -> assertthat(s).isinstanceOf(RabbitMQSender.class)); context.close(); }
@Test public void defaultsTo64BitTraceId() { context = new AnnotationConfigApplicationContext(); context.register(PropertyPlaceholderAutoConfiguration.class,TraceAutoConfiguration.class); context.refresh(); Tracer tracer = context.getBean(Tracer.class); Span span = null; try { span = tracer.createSpan("foo",NeverSampler.INSTANCE); assertthat(span.getTraceIdHigh()).isEqualTo(0L); assertthat(span.getTraceId()).isNotEqualTo(0L); } finally { if (span != null) { tracer.close(span); } } }
@Test public void optInto128BitTraceId() { EnvironmentTestUtils.addEnvironment(context,"spring.sleuth.traceId128:true"); context.register(PropertyPlaceholderAutoConfiguration.class,NeverSampler.INSTANCE); assertthat(span.getTraceIdHigh()).isNotEqualTo(0L); assertthat(span.getTraceId()).isNotEqualTo(0L); } finally { if (span != null) { tracer.close(span); } } }
@Test public void testOrderConfiguration() { ConfigurableApplicationContext applicationContext = SpringApplication.run(new Class[]{BatchEventAutoConfiguration.JobExecutionListenerConfiguration.class,EventJobExecutionConfiguration.class,TestSupportBinderAutoConfiguration.class},new String[]{"--spring.cloud.task.closecontext_enable=false","--spring.main.web-environment=false","--spring.cloud.task.batch.events.chunk-order=5","--spring.cloud.task.batch.events.item-process-order=5","--spring.cloud.task.batch.events.item-read-order=5","--spring.cloud.task.batch.events.item-write-order=5","--spring.cloud.task.batch.events.job-execution-order=5","--spring.cloud.task.batch.events.skip-order=5","--spring.cloud.task.batch.events.step-execution-order=5" }); for (String beanName : LISTENER_BEAN_NAMES) { Ordered ordered = (Ordered)applicationContext.getBean(beanName); assertEquals("Expected order value of 5 for " + beanName,ordered.getorder(),5); } }
@Test public void testMultipleDataSources() { this.applicationContext = SpringApplication.run(new Class[] {JobConfigurationMultipleDataSources.class,EmbeddedDataSourceConfiguration.class,BatchAutoConfiguration.class,TaskBatchAutoConfiguration.class},ARGS); TaskExplorer taskExplorer = this.applicationContext.getBean(TaskExplorer.class); Page<TaskExecution> page = taskExplorer.findTaskExecutionsByName("application",new PageRequest(0,1)); Set<Long> jobExecutionIds = taskExplorer.getJobExecutionIdsByTaskExecutionId(page.iterator().next().getExecutionId()); assertEquals(1,jobExecutionIds.size()); assertEquals(1,taskExplorer.getTaskExecution(jobExecutionIds.iterator().next()).getExecutionId()); }
@Test public void testAutobuiltDataSourceNoJob() { this.applicationContext = SpringApplication.run(new Class[] {NoJobConfiguration.class,PageRequest.of(0,1)); Set<Long> jobExecutionIds = taskExplorer.getJobExecutionIdsByTaskExecutionId(page.iterator().next().getExecutionId()); assertEquals(0,jobExecutionIds.size()); }
@Test public void testMapBased() { this.applicationContext = SpringApplication.run(new Class[] {JobConfiguration.class,(long) taskExplorer.getTaskExecutionIdByJobExecutionId(jobExecutionIds.iterator().next())); }
@Test public void testMultipleJobs() { this.applicationContext = SpringApplication.run(new Class[] {EmbeddedDataSourceConfiguration.class,MultipleJobConfiguration.class,1)); Set<Long> jobExecutionIds = taskExplorer.getJobExecutionIdsByTaskExecutionId(page.iterator().next().getExecutionId()); assertEquals(2,jobExecutionIds.size()); Iterator<Long> jobExecutionIdsIterator = jobExecutionIds.iterator(); assertEquals(1,(long) taskExplorer.getTaskExecutionIdByJobExecutionId(jobExecutionIdsIterator.next())); assertEquals(1,(long) taskExplorer.getTaskExecutionIdByJobExecutionId(jobExecutionIdsIterator.next())); }
@Test public void successfulTasktest() { applicationContext = new SpringApplicationBuilder().sources(new Class[]{TaskConfiguration.class,PropertyPlaceholderAutoConfiguration.class}).build().run(new String[]{ "--spring.cloud.task.closecontext.enable=false","--spring.cloud.task.name=" + TASK_NAME,"--spring.main.web-environment=false"}); String output = this.outputCapture.toString(); assertTrue("Test results do not show create task message: " + output,output.contains(CREATE_TASK_MESSAGE)); assertTrue("Test results do not show success message: " + output,output.contains(UPDATE_TASK_MESSAGE)); assertTrue("Test results have incorrect exit code: " + output,output.contains(SUCCESS_EXIT_CODE_MESSAGE)); }
@Test public void invalidExecutionId() { boolean exceptionFired = false; try { applicationContext = new SpringApplicationBuilder().sources(TaskExceptionConfiguration.class,PropertyPlaceholderAutoConfiguration.class).build().run(new String[]{ "--spring.cloud.task.closecontext.enable=false","--spring.cloud.task.executionid=55"}); } catch (ApplicationContextException exception) { exceptionFired = true; } assertTrue("An ApplicationContextException should have been thrown",exceptionFired); String output = this.outputCapture.toString(); assertTrue("Test results do not show the correct exception message: " + output,output.contains(EXCEPTION_INVALID_TASK_EXECUTION_ID)); }
@Test public void testRepositorynotinitialized() throws Exception { Properties properties = new Properties(); properties.put("spring.cloud.task.tablePrefix","foobarless"); PropertiesPropertySource propertiesSource = new PropertiesPropertySource("test",properties); this.context = new AnnotationConfigApplicationContext(); this.context.getEnvironment().getPropertySources().addLast(propertiesSource); ((AnnotationConfigApplicationContext)context).register(SimpleTaskConfiguration.class); ((AnnotationConfigApplicationContext)context).register(PropertyPlaceholderAutoConfiguration.class); ((AnnotationConfigApplicationContext)context).register(EmbeddedDataSourceConfiguration.class); boolean wasExceptionThrown = false; try { this.context.refresh(); } catch (ApplicationContextException ex) { wasExceptionThrown = true; } assertTrue("Expected ApplicationContextException to be thrown",wasExceptionThrown); }
private DeployerProperties loadCloudProperties() { final ConfigurableApplicationContext context = new SpringApplicationBuilder( PropertyPlaceholderAutoConfiguration.class,DeployerConfiguration.class) .bannerMode(Mode.OFF).logStartupInfo(false).web(false) .properties("spring.config.name=cloud","logging.level.ROOT=OFF","spring.cloud.launcher.list=true","launcher.version=" + getVersion()) .run(this.args); try { return context.getBean(DeployerProperties.class); } finally { context.close(); } }
@Test public void serviceUrlWithCompositePropertySource() { CompositePropertySource source = new CompositePropertySource("composite"); this.context.getEnvironment().getPropertySources().addFirst(source); source.addPropertySource(new MapPropertySource("config",Collections .<String,Object> singletonMap("eureka.client.serviceUrl.defaultZone","http://example.com,http://example2.com"))); this.context.register(PropertyPlaceholderAutoConfiguration.class,TestConfiguration.class); this.context.refresh(); assertEquals("{defaultZone=http://example.com,http://example2.com}",this.context.getBean(EurekaClientConfigBean.class).getServiceUrl() .toString()); assertEquals("[http://example.com/,http://example2.com/]",getEurekaServiceUrlsForDefaultZone()); }
private void setup(String... env) { AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext(); EnvironmentTestUtils.addEnvironment(parent,env); parent.register(UtilAutoConfiguration.class,EurekadiscoveryClientConfiguration.class,EnvironmentKnobbler.class,EurekadiscoveryClientConfigServiceBootstrapConfiguration.class,discoveryClientConfigServiceBootstrapConfiguration.class,ConfigClientProperties.class); parent.refresh(); this.context = new AnnotationConfigApplicationContext(); this.context.setParent(parent); this.context.register(PropertyPlaceholderAutoConfiguration.class,EurekadiscoveryClientConfigServiceAutoConfiguration.class,EurekaClientAutoConfiguration.class); this.context.refresh(); }
@Override public Environment findOne(String config,String profile,String label) { SpringApplicationBuilder builder = new SpringApplicationBuilder( PropertyPlaceholderAutoConfiguration.class); ConfigurableEnvironment environment = getEnvironment(profile); builder.environment(environment); builder.web(WebApplicationType.NONE).bannerMode(Mode.OFF); if (!logger.isDebugEnabled()) { // Make the mini-application startup less verbose builder.logStartupInfo(false); } String[] args = getArgs(config,profile,label); // Explicitly set the listeners (to exclude logging listener which would change // log levels in the caller) builder.application() .setListeners(Arrays.asList(new ConfigFileApplicationListener())); ConfigurableApplicationContext context = builder.run(args); environment.getPropertySources().remove("profiles"); try { return clean(new PassthruEnvironmentRepository(environment).findOne(config,label)); } finally { context.close(); } }
private void setup(String... env) { AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext(); TestPropertyValues.of(env).applyTo(parent); parent.register(UtilAutoConfiguration.class,ConsuldiscoveryClientConfigServiceBootstrapConfiguration.class,ConsulconfigserverAutoConfiguration.class,ConsulAutoConfiguration.class,ConsuldiscoveryClientConfiguration.class); this.context.refresh(); }
private void setupContextForgraph(String graph) { String[] ARGS = new String[] {CLOSE_CONTEXT_ARG,TASK_NAME_ARG,"--graph=" + graph}; this.applicationContext = SpringApplication.run(new Object[] {ComposedRunnerVisitorConfiguration.class,ARGS); }
@Test public void testAddsP6SpyListener() { context.setClassLoader(new HidePackagesClassLoader("com.vladmihalcea.flexypool",PropertyPlaceholderAutoConfiguration.class); context.refresh(); JdbcEventListenerFactory jdbcEventListenerFactory = context.getBean(JdbcEventListenerFactory.class); CompoundJdbcEventListener jdbcEventListener = (CompoundJdbcEventListener) jdbcEventListenerFactory.createJdbcEventListener(); assertthat(jdbcEventListener.getEventListeners()).extracting("class").contains(TracingJdbcEventListener.class); }
@Test public void testDoesNotAddP6SpyListenerIfNoTracer() { context.setClassLoader(new HidePackagesClassLoader("com.vladmihalcea.flexypool",PropertyPlaceholderAutoConfiguration.class); context.refresh(); JdbcEventListenerFactory jdbcEventListenerFactory = context.getBean(JdbcEventListenerFactory.class); CompoundJdbcEventListener jdbcEventListener = (CompoundJdbcEventListener) jdbcEventListenerFactory.createJdbcEventListener(); assertthat(jdbcEventListener.getEventListeners()).extracting("class").doesNotContain(TracingJdbcEventListener.class); }
@Test public void testDoesntAddDatasourceProxyListenerIfNoTracer() { context.setClassLoader(new HidePackagesClassLoader("com.vladmihalcea.flexypool",PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); ProxyDataSource proxyDataSource = (ProxyDataSource) ((DecoratedDataSource) dataSource).getDecoratedDataSource(); ChainListener chainListener = proxyDataSource.getProxyConfig().getQueryListener(); assertthat(chainListener.getListeners()).extracting("class").doesNotContain(TracingQueryExecutionListener.class); }
@Test public void testCustomListeners() throws Exception { context.register(CustomListenerConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); JdbcEventListenerFactory jdbcEventListenerFactory = context.getBean(JdbcEventListenerFactory.class); GetCountingListener getCountingListener = context.getBean(GetCountingListener.class); ClosingCountingListener closingCountingListener = context.getBean(ClosingCountingListener.class); P6DataSource p6DataSource = (P6DataSource) ((DecoratedDataSource) dataSource).getDecoratedDataSource(); assertthat(p6DataSource).extracting("jdbcEventListenerFactory").containsOnly(jdbcEventListenerFactory); CompoundJdbcEventListener jdbcEventListener = (CompoundJdbcEventListener) jdbcEventListenerFactory.createJdbcEventListener(); assertthat(jdbcEventListener.getEventListeners()).contains(getCountingListener,closingCountingListener); assertthat(getCountingListener.connectionCount).isEqualTo(0); Connection connection1 = p6DataSource.getConnection(); assertthat(getCountingListener.connectionCount).isEqualTo(1); assertthat(closingCountingListener.connectionCount).isEqualTo(0); Connection connection2 = p6DataSource.getConnection(); assertthat(getCountingListener.connectionCount).isEqualTo(2); connection1.close(); assertthat(closingCountingListener.connectionCount).isEqualTo(1); connection2.close(); assertthat(closingCountingListener.connectionCount).isEqualTo(2); }
@Test public void testRegisterLogAndSlowQueryLogByDefaultToSlf4j() throws Exception { context.register(DataSourceAutoConfiguration.class,PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); ProxyDataSource proxyDataSource = (ProxyDataSource) ((DecoratedDataSource) dataSource).getDecoratedDataSource(); ChainListener chainListener = proxyDataSource.getProxyConfig().getQueryListener(); assertthat(chainListener.getListeners()).extracting("class").contains(SLF4JSlowQueryListener.class); assertthat(chainListener.getListeners()).extracting("class").contains(SLF4JQueryLoggingListener.class); }
关于NoSuchMethodException:org.springframework.boot.autoconfigure.http.HttpMessageConverters的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Java-Class-C:org.springframework.http.converter.StringHttpMessageConverter、java.lang.ClassNotFoundException:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter、org.springframework.boot.actuate.autoconfigure.ManagementServerPropertiesAutoConfiguration的实例源码、org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration的实例源码的相关知识,请在本站寻找。
本文标签: