package kr.wisestone.owl.config;
|
|
import com.amazonaws.ClientConfiguration;
|
import com.amazonaws.Protocol;
|
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 kr.wisestone.owl.util.PageUtil;
|
import kr.wisestone.owl.util.WebAppUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Profile;
|
import org.springframework.context.support.MessageSourceAccessor;
|
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
|
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.mail.javamail.JavaMailSender;
|
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
import org.springframework.session.FindByIndexNameSessionRepository;
|
import org.springframework.session.security.SpringSessionBackedSessionRegistry;
|
|
import java.util.Properties;
|
|
/**
|
* Created by jeong on 2017-08-14.
|
*/
|
@Configuration
|
public class CommonConfiguration {
|
|
private static final String FILE_ENCODING = "UTF-8";
|
private static final String MAIL_DEBUG = "mail.debug";
|
private static final String MAIL_SMTP_STARTTLS_ENABLE = "mail.smtp.starttls.enable";
|
private static final String MAIL_SMTP_AUTH = "mail.smtp.auth";
|
private static final String MAIL_SMTP_SSL_TRUST = "mail.smtp.ssl.trust";
|
|
@Value("${aws.access.key}")
|
private String accessKey;
|
|
@Value("${aws.access.password}")
|
private String accessPassword;
|
|
@Autowired
|
private FindByIndexNameSessionRepository findByIndexNameSessionRepository;
|
|
@Value("${email.host}")
|
private String emailHost;
|
@Value("${email.port}")
|
private String emailPort;
|
@Value("${email.userName}")
|
private String emailUserName;
|
@Value("${email.password}")
|
private String emailPassword;
|
@Value("${email.transport.protocol}")
|
private String emailTransportProtocol;
|
@Value("${email.smtp.auth}")
|
private String emailSmtpAuth;
|
@Value("${email.smtp.starttle.enable}")
|
private String emailSmtpStarttleEnable;
|
@Value("${email.debug}")
|
private String emailDebug;
|
@Value("${email.sendUrl}")
|
private String emailSendUrl;
|
|
@Bean
|
public WebAppUtil webAppUtil() {
|
return new WebAppUtil();
|
}
|
|
@Bean
|
public PageUtil pageUtil() {
|
return new PageUtil();
|
}
|
|
@Profile("prod")
|
@Bean
|
public static PropertySourcesPlaceholderConfigurer prodProperties() {
|
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
|
configurer.setLocations(new ClassPathResource("system_prod.properties"));
|
configurer.setFileEncoding(FILE_ENCODING);
|
|
return configurer;
|
}
|
|
@Profile("dev")
|
@Bean
|
public static PropertySourcesPlaceholderConfigurer devProperties() {
|
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
|
configurer.setLocations(new ClassPathResource("system_dev.properties"));
|
configurer.setFileEncoding(FILE_ENCODING);
|
|
return configurer;
|
}
|
|
@Profile("test")
|
@Bean
|
public static PropertySourcesPlaceholderConfigurer testProperties() {
|
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
|
configurer.setLocations(new ClassPathResource("system_test.properties"));
|
configurer.setFileEncoding(FILE_ENCODING);
|
|
return configurer;
|
}
|
|
@Profile("design")
|
@Bean
|
public static PropertySourcesPlaceholderConfigurer designProperties() {
|
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
|
configurer.setLocations(new ClassPathResource("system_design.properties"));
|
configurer.setFileEncoding(FILE_ENCODING);
|
|
return configurer;
|
}
|
|
@Bean
|
public String getEmailSendUrl() { return this.emailSendUrl; }
|
|
@Bean
|
public MessageSourceAccessor messageSourceAccessor(ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource) {
|
return new MessageSourceAccessor(reloadableResourceBundleMessageSource);
|
}
|
|
@Bean
|
public ReloadableResourceBundleMessageSource messageSource() {
|
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
|
messageSource.setCacheSeconds(10);
|
messageSource.setDefaultEncoding(FILE_ENCODING);
|
messageSource.setBasenames("/WEB-INF/i18n/messages", "/WEB-INF/i18n/mail", "/WEB-INF/i18n/code");
|
messageSource.setUseCodeAsDefaultMessage(true);
|
|
return messageSource;
|
}
|
|
@Bean
|
public JavaMailSender javaMailSender() {
|
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
|
javaMailSender.setHost(this.emailHost);
|
javaMailSender.setPort(Integer.valueOf(this.emailPort));
|
javaMailSender.setUsername(this.emailUserName);
|
javaMailSender.setPassword(this.emailPassword);
|
|
Properties javaMailProperties = new Properties();
|
javaMailProperties.setProperty(MAIL_SMTP_SSL_TRUST, this.emailHost);
|
javaMailProperties.setProperty(MAIL_SMTP_AUTH, this.emailSmtpAuth);
|
javaMailProperties.setProperty(MAIL_SMTP_STARTTLS_ENABLE, this.emailSmtpStarttleEnable);
|
javaMailProperties.setProperty(MAIL_DEBUG, this.emailDebug);
|
javaMailSender.setJavaMailProperties(javaMailProperties);
|
|
return javaMailSender;
|
}
|
|
@Bean
|
public AmazonS3 amazonS3() {
|
BasicAWSCredentials credentials = new BasicAWSCredentials(this.accessKey, this.accessPassword);
|
ClientConfiguration clientConfiguration = new ClientConfiguration();
|
clientConfiguration.setProtocol(Protocol.HTTP);
|
|
return AmazonS3ClientBuilder
|
.standard()
|
.withRegion(Regions.AP_NORTHEAST_2)
|
.withCredentials(new AWSStaticCredentialsProvider(credentials))
|
.withClientConfiguration(clientConfiguration).build();
|
}
|
|
@Bean
|
@SuppressWarnings("unchecked")
|
public SpringSessionBackedSessionRegistry sessionRegistry() {
|
return new SpringSessionBackedSessionRegistry(this.findByIndexNameSessionRepository);
|
}
|
|
}
|