package com.pgf.mqspring.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.pgf.mqspring.component.MqSpringMessageSourceComponent; import com.pgf.mqspring.filter.RequestAuthFilter; /** * MqSpringの構成クラス */ @Configuration public class MqSpringConfig { /** * AmazonS3のデフォルトクライアントを返す * @return AmazonS3のデフォルトクライアント */ @Bean @Profile("!local") public AmazonS3 s3Client() { return AmazonS3ClientBuilder.defaultClient(); } /** * AWSアクセス用の認証情報を指定 * @param accessKey アクセスキー * @param secretKey シークレットキー * @return ビルドしたAmazonS3のクライアント情報 */ @Bean("s3Client") @Profile("local") public AmazonS3 s3ClientLocal( @Value("${aws.accesskey}") String accessKey, @Value("${aws.secretkey}") String secretKey) { AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); return AmazonS3ClientBuilder .standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.AP_NORTHEAST_1) .build(); } /** * フィルタのオブジェクトをコンポーネントに追加 * @param requestAuthFilter 認証フィルタークラス * @return フィルタ1を登録したBean */ @Bean @Profile("!local") public FilterRegistrationBean filterRegistrationBean(RequestAuthFilter requestAuthFilter) { FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(requestAuthFilter); registrationBean.addUrlPatterns("/pgf/*"); registrationBean.setOrder(1); //set precedence return registrationBean; } /** * ベース名にmessagesを設定する * @return メッセージソース */ @Bean public MqSpringMessageSourceComponent messageSource(@Value("${app.name}") String appName) { MqSpringMessageSourceComponent messageSource = new MqSpringMessageSourceComponent(appName); messageSource.setBasename("messages"); return messageSource; } }