package sample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.*;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module;
/**
* アプリケーションプロセスの起動クラス。
* <p>本クラスを実行する事でSpringBootが提供する組込Tomcatでのアプリケーション起動が行われます。
*/
@SpringBootApplication
@EnableCaching(proxyTargetClass = true)
@Import({ApplicationConfig.class, ApplicationDbConfig.class, ApplicationSeucrityConfig.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
/** SpringMvcの拡張コンフィギュレーション */
@Configuration
public static class WebMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private MessageSource message;
/** HibernateのLazyLoading回避対応。 see JacksonAutoConfiguration */
@Bean
public Hibernate5Module jsonHibernate5Module() {
return new Hibernate5Module();
}
/** BeanValidationメッセージのUTF-8に対応したValidator。 */
@Bean
public LocalValidatorFactoryBean validator() {
LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
factory.setValidationMessageSource(message);
return factory;
}
/** 標準Validatorの差し替えをします。 */
@Override
public org.springframework.validation.Validator getValidator() {
return validator();
}
}
}