mirror of https://github.com/halo-dev/halo
84 lines
3.2 KiB
Java
84 lines
3.2 KiB
Java
package run.halo.app.config;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import java.security.KeyManagementException;
|
|
import java.security.KeyStoreException;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
import org.springframework.boot.web.client.RestTemplateBuilder;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Import;
|
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
|
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
import org.springframework.web.client.RestTemplate;
|
|
import run.halo.app.cache.AbstractStringCacheStore;
|
|
import run.halo.app.cache.InMemoryCacheStore;
|
|
import run.halo.app.cache.LevelCacheStore;
|
|
import run.halo.app.config.attributeconverter.AttributeConverterAutoGenerateConfiguration;
|
|
import run.halo.app.config.properties.HaloProperties;
|
|
import run.halo.app.repository.base.BaseRepositoryImpl;
|
|
import run.halo.app.utils.HttpClientUtils;
|
|
|
|
/**
|
|
* Halo configuration.
|
|
*
|
|
* @author johnniang
|
|
*/
|
|
@Slf4j
|
|
@EnableAsync
|
|
@EnableScheduling
|
|
@Configuration(proxyBeanMethods = false)
|
|
@EnableConfigurationProperties(HaloProperties.class)
|
|
@EnableJpaRepositories(basePackages = "run.halo.app.repository", repositoryBaseClass =
|
|
BaseRepositoryImpl.class)
|
|
@Import(AttributeConverterAutoGenerateConfiguration.class)
|
|
public class HaloConfiguration {
|
|
|
|
private final HaloProperties haloProperties;
|
|
|
|
public HaloConfiguration(HaloProperties haloProperties) {
|
|
this.haloProperties = haloProperties;
|
|
}
|
|
|
|
@Bean
|
|
ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
|
|
builder.failOnEmptyBeans(false);
|
|
return builder.build();
|
|
}
|
|
|
|
@Bean
|
|
RestTemplate httpsRestTemplate(RestTemplateBuilder builder)
|
|
throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
|
|
RestTemplate httpsRestTemplate = builder.build();
|
|
httpsRestTemplate.setRequestFactory(
|
|
new HttpComponentsClientHttpRequestFactory(HttpClientUtils.createHttpsClient(
|
|
(int) haloProperties.getDownloadTimeout().toMillis())));
|
|
return httpsRestTemplate;
|
|
}
|
|
|
|
@Bean
|
|
@ConditionalOnMissingBean
|
|
AbstractStringCacheStore stringCacheStore() {
|
|
AbstractStringCacheStore stringCacheStore;
|
|
switch (haloProperties.getCache()) {
|
|
case "level":
|
|
stringCacheStore = new LevelCacheStore(this.haloProperties);
|
|
break;
|
|
case "memory":
|
|
default:
|
|
//memory or default
|
|
stringCacheStore = new InMemoryCacheStore();
|
|
break;
|
|
}
|
|
log.info("Halo cache store load impl : [{}]", stringCacheStore.getClass());
|
|
return stringCacheStore;
|
|
|
|
}
|
|
}
|