From 62f4e296d302c08b73a96d3ec368a9b2f2e678c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Mon, 24 Dec 2018 09:55:05 +0800 Subject: [PATCH] modify --- .../com/heibaiying/config/ServletConfig.java | 9 +++---- .../heibaiying/config/DataSourceConfig.java | 3 --- .../com/heibaiying/config/ServletConfig.java | 26 +++++++++---------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java index b7daa08..549574d 100644 --- a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java +++ b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java @@ -19,14 +19,11 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @ComponentScan(basePackages = {"com.heibaiying.*"}) public class ServletConfig implements WebMvcConfigurer { - @Autowired - private DataSourceConfig sourceConfig; - /** * 配置数据源 */ @Bean - public DriverManagerDataSource dataSource() { + public DriverManagerDataSource dataSource(DataSourceConfig sourceConfig) { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(sourceConfig.getDriverClassName()); dataSource.setUrl(sourceConfig.getUrl()); @@ -53,9 +50,9 @@ public class ServletConfig implements WebMvcConfigurer { * 定义事务管理器 */ @Bean - public DataSourceTransactionManager transactionManager() { + public DataSourceTransactionManager transactionManager(DriverManagerDataSource dataSource) { DataSourceTransactionManager manager = new DataSourceTransactionManager(); - manager.setDataSource(dataSource()); + manager.setDataSource(dataSource); return manager; } diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java index c435553..51dd508 100644 --- a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java @@ -1,11 +1,9 @@ package com.heibaiying.config; import lombok.Data; -import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; -import org.springframework.core.annotation.Order; /** * @author : heibaiying @@ -15,7 +13,6 @@ import org.springframework.core.annotation.Order; @Configuration @PropertySource(value = "classpath:mysql.properties") @Data -@NoArgsConstructor public class DataSourceConfig { /** diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java index 48ffa83..ebe6707 100644 --- a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java @@ -2,14 +2,10 @@ package com.heibaiying.config; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.mapper.MapperScannerConfigurer; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.annotation.Order; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -26,19 +22,23 @@ import java.io.IOException; @ComponentScan(basePackages = {"com.heibaiying.*"}) public class ServletConfig implements WebMvcConfigurer { - @Autowired - private DataSourceConfig sourceConfig; + /* @Autowired + * private DataSourceConfig sourceConfig; + * 不要采用这种方式注入DataSourceConfig,由于类的加载顺序影响会报空指针异常 + * 最好的方式是在DriverManagerDataSource构造中采用参数注入 + */ /** * 配置数据源 + * sourceConfig */ @Bean - public DriverManagerDataSource dataSource() { + public DriverManagerDataSource dataSource(DataSourceConfig sourceConfig) { DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("com.mysql.jdbc.Driver"); - dataSource.setUrl("jdbc:mysql://localhost:3306/mysql"); - dataSource.setUsername("root"); - dataSource.setPassword("root"); + dataSource.setDriverClassName(sourceConfig.getDriverClassName()); + dataSource.setUrl(sourceConfig.getUrl()); + dataSource.setUsername(sourceConfig.getUsername()); + dataSource.setPassword(sourceConfig.getPassword()); return dataSource; } @@ -74,9 +74,9 @@ public class ServletConfig implements WebMvcConfigurer { * 定义事务管理器 */ @Bean - public DataSourceTransactionManager transactionManager() { + public DataSourceTransactionManager transactionManager(DriverManagerDataSource dataSource) { DataSourceTransactionManager manager = new DataSourceTransactionManager(); - manager.setDataSource(dataSource()); + manager.setDataSource(dataSource); return manager; }