浏览代码

# feat:使用SpringConfig配置类代替spring-context.xml配置文件

yang yi 1 周之前
父节点
当前提交
9037069832
共有 2 个文件被更改,包括 68 次插入51 次删除
  1. 68 0
      src/main/java/space/anyi/config/SpringConfig.java
  2. 0 51
      src/main/resources/spring-context.xml

+ 68 - 0
src/main/java/space/anyi/config/SpringConfig.java

@@ -0,0 +1,68 @@
+package space.anyi.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.mapper.MapperScannerConfigurer;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.*;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.sql.DataSource;
+
+/**
+ * @fileName: SpringConfig
+ * @projectName: SSM_template
+ * @package: space.anyi.config
+ * @author: 杨逸
+ * @date:2026/4/24 13:57
+ * @description: Spring配置类替代spring-context.xml
+ */
+@Configuration  // 标识为配置类
+@ComponentScan(basePackages = {"space.anyi"},excludeFilters = {@ComponentScan.Filter(value = {Controller.class}, type = FilterType.ANNOTATION)})  // 扫描Service层
+@PropertySource("classpath:jdbc.properties")  // 加载属性文件
+@EnableTransactionManagement  // 开启事务管理
+public class SpringConfig {
+    // 配置数据源
+    @Bean
+    public DataSource dataSource(@Value("${jdbc.url}") String url,
+                                 @Value("${jdbc.username}") String username,
+                                 @Value("${jdbc.password}") String password,
+                                 @Value("${jdbc.driver}") String driver) {
+        DruidDataSource dataSource = new DruidDataSource();
+        dataSource.setUrl(url);
+        dataSource.setUsername(username);
+        dataSource.setPassword(password);
+        dataSource.setDriverClassName(driver);
+        return dataSource;
+    }
+
+    // 配置SqlSessionFactory
+    @Bean
+    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
+        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
+        factoryBean.setDataSource(dataSource);
+        factoryBean.setTypeAliasesPackage("space.anyi.entity");
+        // 配置MyBatis设置
+        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+        configuration.setMapUnderscoreToCamelCase(true);  // 驼峰命名
+        factoryBean.setConfiguration(configuration);
+        return factoryBean;
+    }
+
+    // 配置Mapper扫描
+    @Bean
+    public MapperScannerConfigurer mapperScannerConfigurer() {
+        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
+        configurer.setBasePackage("space.anyi");
+        return configurer;
+    }
+
+    // 配置事务管理器
+    @Bean
+    public PlatformTransactionManager transactionManager(DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+}

+ 0 - 51
src/main/resources/spring-context.xml

@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:tx="http://www.springframework.org/schema/tx"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xsi:schemaLocation="
-           http://www.springframework.org/schema/beans
-           http://www.springframework.org/schema/beans/spring-beans.xsd
-           http://www.springframework.org/schema/tx
-           http://www.springframework.org/schema/tx/spring-tx.xsd
-           http://www.springframework.org/schema/context
-           http://www.springframework.org/schema/context/spring-context.xsd">
-
-    <!-- 1. 扫描包:排除 Controller(留给 Spring MVC 扫描) -->
-    <context:component-scan base-package="space.anyi">
-        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
-    </context:component-scan>
-
-    <!-- 2. 加载 jdbc.properties -->
-    <context:property-placeholder location="classpath:jdbc.properties"/>
-
-    <!-- 3. 配置数据源(Druid 连接池) -->
-    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
-        <property name="driverClassName" value="${jdbc.driver}"/>
-        <property name="url" value="${jdbc.url}"/>
-        <property name="username" value="${jdbc.username}"/>
-        <property name="password" value="${jdbc.password}"/>
-    </bean>
-
-    <!-- 4. 配置 SqlSessionFactory -->
-    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-        <property name="dataSource" ref="dataSource"/>
-        <property name="configLocation" value="classpath:mybatis-config.xml"/>
-        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
-        <property name="typeAliasesPackage" value="com.yourpackage.entity"/>
-    </bean>
-
-    <!-- 5. 配置 Mapper 扫描(自动生成代理实现类) -->
-    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
-        <property name="basePackage" value="com.yourpackage.mapper"/>
-        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
-    </bean>
-
-    <!-- 6. 配置事务管理器 -->
-    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-        <property name="dataSource" ref="dataSource"/>
-    </bean>
-
-    <!-- 7. 启用注解事务管理 -->
-    <tx:annotation-driven transaction-manager="transactionManager"/>
-</beans>