/
Hipahopa808
/
SpringCourse
Обзор
Документация
Войти
/
Hipahopa808
/
SpringCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
SpringHibernateApp/src/main/java/ru/alishev/springcourse/config/SpringConfig.java
115 строк
4 KB
Neil Alishev
Add Spring + Hibernate App
02 апр 2021, 15:36
02 апр 2021, 15:36
e2ff4d8
Код
Авторство
О чём код?
package ru.alishev.springcourse.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.hibernate5.HibernateTransactionManager; import org.springframework.orm.hibernate5.LocalSessionFactoryBean; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.thymeleaf.spring5.SpringTemplateEngine; import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring5.view.ThymeleafViewResolver; import javax.sql.DataSource; import java.util.Properties; /** * @author Neil Alishev */ @Configuration @ComponentScan("ru.alishev.springcourse") @PropertySource("classpath:hibernate.properties") @EnableTransactionManagement @EnableWebMvc public class SpringConfig implements WebMvcConfigurer { private final ApplicationContext applicationContext; private final Environment env; @Autowired public SpringConfig(ApplicationContext applicationContext, Environment env) { this.applicationContext = applicationContext; this.env = env; } @Bean public SpringResourceTemplateResolver templateResolver() { SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setApplicationContext(applicationContext); templateResolver.setPrefix("/WEB-INF/views/"); templateResolver.setSuffix(".html"); templateResolver.setCharacterEncoding("UTF-8"); return templateResolver; } @Bean public SpringTemplateEngine templateEngine() { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver()); templateEngine.setEnableSpringELCompiler(true); return templateEngine; } @Override public void configureViewResolvers(ViewResolverRegistry registry) { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); resolver.setCharacterEncoding("UTF-8"); registry.viewResolver(resolver); } @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(env.getRequiredProperty("hibernate.driver_class")); dataSource.setUrl(env.getRequiredProperty("hibernate.connection.url")); dataSource.setUsername(env.getRequiredProperty("hibernate.connection.username")); dataSource.setPassword(env.getRequiredProperty("hibernate.connection.password")); return dataSource; } // Используем Hibernate вместо JdbcTemplate // @Bean // public JdbcTemplate jdbcTemplate() { // return new JdbcTemplate(dataSource()); // } private Properties hibernateProperties() { Properties properties = new Properties(); properties.put("hibernate.dialect", env.getRequiredProperty("hibernate.dialect")); properties.put("hibernate.show_sql", env.getRequiredProperty("hibernate.show_sql")); return properties; } @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan("ru.alishev.springcourse.models"); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean public PlatformTransactionManager hibernateTransactionManager() { HibernateTransactionManager transactionManager = new HibernateTransactionManager(); transactionManager.setSessionFactory(sessionFactory().getObject()); return transactionManager; } }