当前位置: 首页 > news >正文

常见工厂后处理器作用

        Spring有两个常见的工厂后处理器,用于包扫描以及整合其它框架。这两个后处理器分别是

ConfigurationClassPostProcessor和MapperScannerConfigurer。

1.准备依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo2</artifactId><version>0.0.1-SNAPSHOT</version><name>demo2</name><description>demo2</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- Spring 核心依赖(包含 getResources 和 PathMatchingResourcePatternResolver) --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.23</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.23</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.3.23</version></dependency><!-- MyBatis 相关依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.1.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><!-- Spring JDBC --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.23</version></dependency><!-- 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.18</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2.类准备

1)Config配置类

package com.example.demo2.b03;import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/5 21:46*/
@Configuration
@ComponentScan("com.example.demo2.b03.component")
public class Config {@Beanpublic Bean1 bean1(){return new Bean1();}@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);return sqlSessionFactoryBean;}@Bean(initMethod = "init")public DruidDataSource dataSource(){DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl("jdbc:mysql://localhost:3306/test");dataSource.setUsername("root");dataSource.setPassword("root");return dataSource;}
}

2)Bean2

     Bean2在com.example.demo2.b03.component包下,通过扫描注入到Spring容器。

package com.example.demo2.b03.component;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/5 21:58*/
@Component
public class Bean2 {private static final Logger log = LoggerFactory.getLogger(Bean2.class);public Bean2(){log.info("我被spring管理了");}
}

3)Bean1

package com.example.demo2.b03;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/5 21:44*/
public class Bean1 {
}

3.主类调用

     配置类中的类并未注入到Spring容器中,给配置类添加下面两个工厂后处理器。结果如下。

1)ConfigurationClassPostProcessor后处理器

该类继承图如下:

 context.registerBean(ConfigurationClassPostProcessor.class);

结果输出:

2)MapperScannerConfigurer后处理器

     该后处理器是用来扫描mapper接口,用来整合spring与mybatis。首先提供mapper接口

package com.example.demo2.b03.mapper;import org.apache.ibatis.annotations.Mapper;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/5 22:51*/
@Mapper
public interface Mapper1 {
}
package com.example.demo2.b03.mapper;import org.apache.ibatis.annotations.Mapper;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/5 22:51*/
@Mapper
public interface Mapper2 {
}

         注入后处理器,并同时设置包扫描的位置。

 context.registerBean(MapperScannerConfigurer.class,beanDefinition -> {beanDefinition.getPropertyValues().add("basePackage","com.example.demo2.b03.mapper");});

结果输出:

      相比之前,多了两个mapper接口,并且间接加入了常见的Bean后处理器。

http://www.dtcms.com/a/446634.html

相关文章:

  • 公司免费网站制作云匠网接单
  • 网站建设与管理学习收获微信公众号免费模板网站
  • 企业可以做哪些网站做网站前端用什么语言
  • 阿里云服务器上传网站内容北京电力建设公司官网
  • 如何找到网站是谁做的哪家公司网站建设口碑好
  • Bootstrap 简介
  • 锡林浩特网站建设微信开发wordpress托管教程
  • 网站由什么组成网站备案更名
  • CPU高负载场景调优实战
  • 宣城地宝网站开发网络系统管理技能大赛考什么
  • 【Java核心技术/基础】30道Java核心技术集合框架面试题及答案
  • 代做网站公司哪家好pc网站开发
  • 如何用服务器发布网站揭阳制作公司网站
  • 开发网站网络公司wordpress 三栏主题
  • 门户网站报价常用的网站类型有哪些类型有哪些类型
  • 做网站外包群wordpress 大小
  • 论信息系统项目的资源管理和成本管理,(人力资源管理)
  • AI Workflow v.s. AI Agent v.s. Agentic Workflow 与应用建议
  • P1996 约瑟夫问题
  • 有哪些学做衣服的网站网站开发团队人数构成
  • 做网站苏州淘宝店网站建设
  • 对面试的一些思考
  • 【代码随想录day 35】 力扣 01背包问题 二维
  • 百度网盘怎么做网站友情链接交换平台免费
  • 网站模版亮点网站建设有关表格
  • 手机端网站制作教程合肥大型网站制
  • 鞍山高新区网站软文技巧
  • wordpress做物流网站网站建设合同书相关附件
  • 软件供应链风险预测实操指南——从SCA到SBOM 2.0的全流程落地
  • 免费网站排名优化在线产品营销推广方案