package com.fuwo.headline; import org.apache.http.client.config.RequestConfig; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.rest.core.config.RepositoryRestConfiguration; import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter; import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext; import org.springframework.security.oauth2.client.OAuth2ClientContext; import org.springframework.security.oauth2.client.OAuth2RestTemplate; import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; import org.springframework.security.oauth2.client.token.AccessTokenProvider; import org.springframework.security.oauth2.client.token.AccessTokenProviderChain; import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsAccessTokenProvider; import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; import org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeResourceDetails; import org.springframework.security.oauth2.client.token.grant.implicit.ImplicitAccessTokenProvider; import org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordAccessTokenProvider; import org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordResourceDetails; import javax.annotation.Resource; import javax.persistence.Entity; import javax.persistence.EntityManagerFactory; import javax.persistence.metamodel.ManagedType; import javax.persistence.metamodel.Metamodel; import java.util.Arrays; import java.util.Collections; import java.util.concurrent.Executor; /** * Created by Jerry on 2017/5/31. */ @Configuration @EnableScheduling @EnableAsync(proxyTargetClass = true) @EnableCaching(proxyTargetClass = true) public class WebAppConfiguration { @Bean public OAuth2ProtectedResourceDetails oAuth2ProtectedResourceDetails() { ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails(); resourceDetails.setAccessTokenUri("http://account.fuwo.com/oauth/token"); resourceDetails.setClientId("client2"); resourceDetails.setClientSecret("client2"); return resourceDetails; } @Bean @Qualifier("oauth2ClientContext") public OAuth2ClientContext oauth2ClientContext() { DefaultOAuth2ClientContext defaultOAuth2ClientContext = new DefaultOAuth2ClientContext(); return defaultOAuth2ClientContext; } @Bean public OAuth2RestTemplate oAuth2RestTemplate(OAuth2ProtectedResourceDetails oAuth2ProtectedResourceDetails, @Qualifier("oauth2ClientContext") OAuth2ClientContext oauth2ClientContext) { OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(oAuth2ProtectedResourceDetails, oauth2ClientContext); SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); restTemplate.setRequestFactory(factory); return restTemplate; } @Bean @Autowired public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(connectionFactory); RedisSerializer<String> redisSerializer = new StringRedisSerializer(); //key序列化方式 template.setKeySerializer(redisSerializer); return template; } /* @Bean @Autowired public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate template = new RabbitTemplate(connectionFactory); return template; } */ @Bean public RepositoryRestConfigurer repositoryRestConfigurer(EntityManagerFactory entityManagerFactory) { return new RepositoryRestConfigurerAdapter() { @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.setDefaultMediaType(MediaType.APPLICATION_JSON); //Expose all IDs when using Spring Data Rest Metamodel metamodel = entityManagerFactory.getMetamodel(); for (ManagedType<?> managedType : metamodel.getManagedTypes()) { Class<?> javaType = managedType.getJavaType(); if (javaType.isAnnotationPresent(Entity.class)) { config.exposeIdsFor(managedType.getJavaType()); } } } }; } @Bean public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(2); executor.setMaxPoolSize(10); executor.setQueueCapacity(500); executor.setThreadNamePrefix("spring-tasks-"); executor.initialize(); return executor; } @Bean public ClientHttpRequestFactory getClientHttpRequestFactory() { int timeout = 5000; RequestConfig config = RequestConfig.custom().setConnectTimeout(timeout) .setConnectionRequestTimeout(timeout) .setSocketTimeout(timeout) .build(); CloseableHttpClient client = HttpClientBuilder.create() .setDefaultRequestConfig(config).build(); return new HttpComponentsClientHttpRequestFactory(client); } }
spring Oauth2 client
最新推荐文章于 2024-08-22 15:45:45 发布