Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.pw.ism; import com.pw.ism.heartbeat.HeartbeatRepository; import com.pw.ism.heartbeat.InMemoryHeartbeatRepository; import com.pw.ism.message.Message; import com.pw.ism.message.MessageRepository; import com.pw.ism.users.UserProfileFormatter; import com.pw.ism.users.UserRepository; import java.util.Locale; import javax.annotation.PostConstruct; import javax.sql.DataSource; import org.h2.server.web.WebServlet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.embedded.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.core.convert.converter.Converter; import org.springframework.format.FormatterRegistry; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import org.springframework.web.servlet.i18n.SessionLocaleResolver; import org.thymeleaf.extras.java8time.dialect.Java8TimeDialect; /** * * @author NRS */ @Profile("dev") @Configuration public class DevMvcConfiguration extends WebMvcConfigurerAdapter { @Autowired public UserRepository userRepository; @Autowired public MessageRepository messageRepository; @Bean public HeartbeatRepository heartbeatRepository() { return new InMemoryHeartbeatRepository(); } @Bean public Converter<String, Message> messageConverter() { return new Converter<String, Message>() { @Override public Message convert(String id) { return messageRepository.findOne(Long.valueOf(id)); } }; } @PostConstruct public void addDummyData() { messageRepository.save(new Message("Customer1", "Network1", "SampleText12345")); messageRepository.save(new Message("Klient", "sie", "semka")); } @Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); slr.setDefaultLocale(Locale.US); return slr; } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); lci.setParamName("lang"); return lci; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } @Bean public DataSource dataSource() { // no need shutdown, EmbeddedDatabaseFactoryBean will take care of this EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.H2) //.H2 or .DERBY .addScript("db/scripts/1.sql") //.addScript("db/scripts/2.sql") .build(); return db; } @Bean public JdbcTemplate jdbcTemplate(DataSource ds) { return new JdbcTemplate(ds); } @Bean public PasswordEncoder passwordEncoder() { PasswordEncoder encoder = new BCryptPasswordEncoder(); return encoder; } @Bean ServletRegistrationBean h2servletRegistration() { ServletRegistrationBean registrationBean = new ServletRegistrationBean(new WebServlet()); registrationBean.addUrlMappings("/console/*"); return registrationBean; } @Bean public Java8TimeDialect java8TimeDialect() { return new Java8TimeDialect(); } @Override public void addFormatters(FormatterRegistry formatterRegistry) { formatterRegistry.addFormatter(new UserProfileFormatter()); } }