X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=dist%2Fhttp-resources%2F2.0.0%2Fxref%2Fde%2Fjuplo%2Fhttpresources%2FHttpResourcesAutoConfiguration.html;fp=dist%2Fhttp-resources%2F2.0.0%2Fxref%2Fde%2Fjuplo%2Fhttpresources%2FHttpResourcesAutoConfiguration.html;h=554762cf312e7b843d9ab4be3162791f84763bf9;hb=96ec104e2974d001e9bc82c3af8b21029b2042d4;hp=0000000000000000000000000000000000000000;hpb=de1fa457a1c69c673d4dd5c0a2c9af568f74ea12;p=website diff --git a/dist/http-resources/2.0.0/xref/de/juplo/httpresources/HttpResourcesAutoConfiguration.html b/dist/http-resources/2.0.0/xref/de/juplo/httpresources/HttpResourcesAutoConfiguration.html new file mode 100644 index 00000000..554762cf --- /dev/null +++ b/dist/http-resources/2.0.0/xref/de/juplo/httpresources/HttpResourcesAutoConfiguration.html @@ -0,0 +1,152 @@ + + +
++1 package de.juplo.httpresources; +2 +3 +4 import java.time.Clock; +5 import org.slf4j.Logger; +6 import org.slf4j.LoggerFactory; +7 import org.springframework.boot.autoconfigure.AutoConfigureBefore; +8 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +9 import org.springframework.boot.autoconfigure.web.ResourceProperties; +10 import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; +11 import org.springframework.boot.context.properties.EnableConfigurationProperties; +12 import org.springframework.cache.Cache; +13 import org.springframework.cache.concurrent.ConcurrentMapCache; +14 import org.springframework.cache.support.NoOpCache; +15 import org.springframework.context.ApplicationContext; +16 import org.springframework.context.annotation.Bean; +17 import org.springframework.context.annotation.Configuration; +18 import org.springframework.core.io.DefaultResourceLoader; +19 import org.springframework.http.client.ClientHttpRequestFactory; +20 +21 +22 /** +23 * Automatic configuration +24 * +25 * @author Kai Moritz +26 */ +27 @Configuration +28 @EnableConfigurationProperties(HttpResourcesProperties.class) +29 @AutoConfigureBefore(WebMvcAutoConfiguration.class) +30 public class HttpResourcesAutoConfiguration +31 { +32 private static final Logger LOG = +33 LoggerFactory.getLogger(HttpResourcesAutoConfiguration.class); +34 +35 public static final String CACHE_NAME = "http-resources-cache"; +36 +37 +38 @ConditionalOnMissingBean(Clock.class) +39 @Bean +40 public Clock clock() +41 { +42 return Clock.systemDefaultZone(); +43 } +44 +45 @ConditionalOnMissingBean(name = "sources") +46 @Bean +47 public String[] sources(ResourceProperties properties) +48 { +49 String[] sources = properties.getStaticLocations(); +50 +51 if (sources.length == 0) +52 throw new IllegalArgumentException("At least one source must be configured!"); +53 +54 boolean hasRemoteResource = false; +55 for (String source : sources) +56 hasRemoteResource |= HttpResources.isHttpResource(source); +57 if (!hasRemoteResource) +58 LOG.warn("No remote-resource in {}", sources); +59 +60 return sources; +61 } +62 +63 +64 @ConditionalOnMissingBean(HttpResourceFetcher.class) +65 @Bean +66 public HttpResourceFetcher fetcher( +67 ClientHttpRequestFactory requestFactory, +68 Clock clock, +69 HttpResourcesProperties properties) +70 { +71 LOG.info( +72 "Creating bean of type HttpResourceFetcher (default-ttl={}, min-ttl={}, serve-stale={})", +73 properties.defaultTTL, +74 properties.minTTL, +75 properties.serveStale); +76 +77 Cache cache; +78 if (properties.cache) +79 { +80 LOG.info("Enable caching for HttpResources"); +81 cache = new ConcurrentMapCache(CACHE_NAME); +82 } +83 else +84 { +85 cache = new NoOpCache(CACHE_NAME); +86 } +87 +88 return new HttpResourceFetcher( +89 requestFactory, +90 cache, +91 clock, +92 properties.defaultTTL, +93 properties.minTTL, +94 properties.serveStale); +95 } +96 +97 @ConditionalOnMissingBean(HttpResources.class) +98 @Bean +99 public HttpResources httpResources( +100 HttpResourceFetcher fetcher, +101 Clock clock, +102 HttpResourcesProperties properties +103 ) +104 { +105 LOG.info( +106 "Creating bean of type HttpResources (fetcher={}, cache={})", +107 properties.cache, +108 fetcher); +109 +110 HttpResources#HttpResources">HttpResources resources = new HttpResources(fetcher, clock); +111 return resources; +112 } +113 +114 @ConditionalOnMissingBean +115 @Bean +116 public HttpResourceProtocolResolver httpResourceProtocolResolver( +117 HttpResources resources, +118 HttpResourcesProperties properties, +119 DefaultResourceLoader resourceLoader +120 ) +121 { +122 LOG.info("Creating and registrating a bean of type HttpResourceProtocolResolver"); +123 HttpResourceProtocolResolver resolver = +124 new HttpResourceProtocolResolver(resources); +125 resourceLoader.addProtocolResolver(resolver); +126 return resolver; +127 } +128 +129 @ConditionalOnMissingBean +130 @Bean +131 public HttpResourceChainAwareResourceLoader httpResourceChainAwareResourceLoader( +132 ApplicationContext context, +133 String[] sources +134 ) +135 { +136 LOG.info("Creating a bean of type HttpResourceChainAwareResourceLoader"); +137 return new HttpResourceChainAwareResourceLoader(context, sources); +138 } +139 } ++