diff --git a/core/src/main/java/org/pqh/core/config/HibernateConfig.java b/core/src/main/java/org/pqh/core/config/HibernateConfig.java index 501d121..6dc5a3e 100644 --- a/core/src/main/java/org/pqh/core/config/HibernateConfig.java +++ b/core/src/main/java/org/pqh/core/config/HibernateConfig.java @@ -3,17 +3,18 @@ package org.pqh.core.config; import org.apache.commons.dbcp2.BasicDataSource; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.pqh.core.util.SpringUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.PropertySource; import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.orm.hibernate5.HibernateTransactionManager; import org.springframework.orm.hibernate5.LocalSessionFactoryBean; import org.springframework.transaction.annotation.EnableTransactionManagement; +import javax.annotation.PostConstruct; +import java.io.IOException; + /** * Created by reborn on 2017/7/28. */ @@ -30,39 +31,40 @@ public class HibernateConfig{ private String username; @Value("${hibernate.connection.password}") private String password; + @Value("${hibernate.connection.driver_class}") + private String driver; + private LocalSessionFactoryBean sessionFactoryBean; public BasicDataSource basicDataSource(){ BasicDataSource dataSource = new BasicDataSource(); + dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); - dataSource.setUrl(url); - dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dataSource.setDriverClassName(driver); return dataSource; } - @Bean("sessionFactoryBean") - public LocalSessionFactoryBean sessionFactoryBean(){ - LocalSessionFactoryBean sessionFactoryBean=new LocalSessionFactoryBean(); - log.info("数据库配置初始化\nurl="+sessionFactoryBean.getHibernateProperties()+"\nusername="+username+"\npassword="+password); + @PostConstruct + public void init() throws IOException { + log.info("数据库配置初始化\nurl="+url+"\nusername="+username+"\npassword="+password); + sessionFactoryBean=new LocalSessionFactoryBean(); sessionFactoryBean.setDataSource(basicDataSource()); sessionFactoryBean.setPackagesToScan("org.pqh.core.model"); - return sessionFactoryBean; + sessionFactoryBean.afterPropertiesSet(); } @Bean("transactionManager") - @DependsOn("sessionFactoryBean") public HibernateTransactionManager hibernateTransactionManager() { HibernateTransactionManager hibernateTransactionManager=new HibernateTransactionManager(); - hibernateTransactionManager.setSessionFactory(SpringUtil.getBean(LocalSessionFactoryBean.class).getObject()); + hibernateTransactionManager.setSessionFactory(sessionFactoryBean.getObject()); return hibernateTransactionManager; } @Bean("hibernateTemplate") - @DependsOn("sessionFactoryBean") public HibernateTemplate hibernateTemplate(){ HibernateTemplate hibernateTemplate=new HibernateTemplate(); - hibernateTemplate.setSessionFactory(SpringUtil.getBean(LocalSessionFactoryBean.class).getObject()); + hibernateTemplate.setSessionFactory(sessionFactoryBean.getObject()); return hibernateTemplate; } diff --git a/core/src/main/java/org/pqh/core/util/SpringUtil.java b/core/src/main/java/org/pqh/core/util/SpringUtil.java index 44de431..2648d04 100644 --- a/core/src/main/java/org/pqh/core/util/SpringUtil.java +++ b/core/src/main/java/org/pqh/core/util/SpringUtil.java @@ -1,27 +1,35 @@ package org.pqh.core.util; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.Map; /** * Created by reborn on 2017/9/19. */ -public class SpringUtil extends WebMvcConfigurationSupport { +@Component +@Lazy(false) +public class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; + private Logger log= LogManager.getLogger(); public static T getBean(Class c){ return applicationContext.getBean(c); } @Override - public void setApplicationContext(ApplicationContext applicationContext) { - super.setApplicationContext(applicationContext); + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + log.info("init applicationContext"); SpringUtil.applicationContext=applicationContext; } diff --git a/pom.xml b/pom.xml index 51f6110..76d6826 100644 --- a/pom.xml +++ b/pom.xml @@ -17,14 +17,14 @@ UTF-8 1.8 - 4.3.10.RELEASE + RELEASE 6.0.6 - 2.1.1 - 5.2.10.Final - 2.9.0 - 1.8.10 - 2.8.2 - 2.5 + RELEASE + RELEASE + RELEASE + RELEASE + RELEASE + RELEASE 4.12 3.1.0 diff --git a/web/src/main/resources/hibernate.properties b/web/src/main/resources/hibernate.properties index 87b1254..c4d9886 100644 --- a/web/src/main/resources/hibernate.properties +++ b/web/src/main/resources/hibernate.properties @@ -1,6 +1,7 @@ hibernate.connection.pool_size=5 hibernate.jdbc.fetch_size=50 hibernate.dialect=org.hibernate.dialect.MySQL57Dialect +hibernate.connection.driver_class=com.mysql.cj.jdbc.Driver hibernate.connection.username=root hibernate.connection.password=123456 hibernate.connection.url=jdbc:mysql://localhost:3306/bilibili?serverTimezone=UTC&&useSSL=true \ No newline at end of file