当前位置:首页 > 经验 >

mybatis简单示例(mybatis例子)

来源:原点资讯(www.yd166.com)时间:2022-10-29 11:54:56作者:YD166手机阅读>>

Spring之所以能打败其他所有同类型Java开发框架屹立不倒的重要原因之一就是提供很多扩展点,让其他组件和框架很容易就整合到Spring框架里,所以也就诞生很多基于Spring的二次开发项目,接下来我们一起聊聊Spring提供哪些扩展点,这篇文章只是简单说明扩展点但不深入,有兴趣的伙伴可以后续一起学习交流,本篇最后我们再进行一个Mybatis和Spring整合工程简易开发示例

Spring加载上下文方式

Spring加载容器上下文主要提供以下三大类方式,第一种基于配置类为常用的使用方式,AnnotationConfigApplicationContext传入参数是一个Class数组也即是支持多个配置类

public class ApplicationDemo { public static void main(String[] args) { //基于配置类加载Spring上下文 AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class); Student student = applicationContext.getBean(Student.class); System.out.println(student); //基于项目路径xml加载Spring上下文 ClassPathXmlApplicationContext applicationContextXml = new ClassPathXmlApplicationContext("spring.xml"); student = applicationContextXml.getBean(Student.class); System.out.println(student); //基于文件系统绝对路径xml加载Spring上下文 FileSystemXmlApplicationContext applicationContextFileXml = new FileSystemXmlApplicationContext("E://spring.xml"); student = applicationContextXml.getBean(Student.class); System.out.println(student); } } @Configuration @ComponentScan({"com.itxs.pojo","com.itxs.extend"}) public class MyConfig { }

public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); register(componentClasses); refresh(); } 扩展点ApplicationContextInitializer

这个是Spring Boot提供的扩展点,在整个 spring 容器在刷新之前初始化 ConfigurableApplicationContext 的回调接口,简单来说,就是在容器刷新之前调用此类的 initialize 方法。这个点允许用户自己扩展。用户可以在整个 spring 容器还没被初始化之前做过一些事情。可以想到的场景可能为,在最开始激活一些配置,或者利用这时候 class 还没被类加载器加载的时机,进行动态字节码注入等操作

public class MyApplicationContextInitializer implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext configurableApplicationContext) { System.out.println("-----------------------MyApplicationContextInitializer initialize"); } }

@SpringBootApplication public class MyApplication { public static void main(String[] args) { //SpringApplication Main函数添加初始化器方式 SpringApplication springApplication = new SpringApplication(MyApplication.class); springApplication.addInitializers(new MyApplicationContextInitializer()); springApplication.run(args); } }

mybatis简单示例,mybatis例子(1)

第二种配置文件中的配置

context: initializer: classes: com.itxs.extend.MyApplicationContextInitializer

第三种SpringBoot的SPI扩展---META-INF/spring.factories中配置

org.springframework.context.ApplicationContextInitializer=com.itxs.extend.MyApplicationContextInitializer

mybatis简单示例,mybatis例子(2)

BeanDefinitionRegistryPostProcessor-bean定义注册后置处理器

BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的子接口,BeanFactoryPostProcessor的作用是在bean的定义信息已经加载但还没有进行初始化的时候执行postProcessBeanFactory()的方法,BeanDefinitionRegistryPostProcessor是在BeanFactoryPostProcessor的前面执行,在bean定义之后提供的扩展点,比如可以在这里动态注册自己的 beanDefinition,加载 classpath 之外的 bean信息。

mybatis简单示例,mybatis例子(3)

@Component public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException { System.out.println("BeanDefinitionRegistryPostProcessor-postProcessBeanDefinitionRegistry"); System.out.println("BeanDefinitionCount:" beanDefinitionRegistry.getBeanDefinitionCount()); String[] beanDefinitionNames = beanDefinitionRegistry.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println("beanDefinitionName:" beanDefinitionName); } } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { System.out.println("BeanDefinitionRegistryPostProcessor-postProcessBeanFactory"); } } BeanFactoryPostProcessor-Bean工厂后置处理器

BeanFactoryPostProcessor 接口是 Spring 初始化 BeanFactory 的扩展接口,在 Spring 在读取 beanDefinition 信息之后实例化 bean 之前读取 bean 定义并可以修改它。在这个时机,用户可以通过实现这个扩展接口来自行处理一些东西,比如修改已经注册的 beanDefinition 的元信息。下面将student bean类型修改为teacher bean类型

@Component public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { System.out.println("BeanFactoryPostProcessor-postProcessBeanFactory"); BeanDefinition student = configurableListableBeanFactory.getBeanDefinition("student"); student.setBeanClassName(Teacher.class.getName()); } }

mybatis简单示例,mybatis例子(4)

首页 1234下一页

栏目热文

mybatis基本工作流程(mybatis中的基础知识和快速入门)

mybatis基本工作流程(mybatis中的基础知识和快速入门)

1、首先是读取Mybatis的核心配置文件Mybaits-config.xml,该文件主要是配置了数据库的连接信息、用户...

2022-10-29 11:42:24查看全文 >>

mybatis原理通俗易懂(my batis的工作原理)

mybatis原理通俗易懂(my batis的工作原理)

近来想写一个Mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客...

2022-10-29 11:56:10查看全文 >>

mybatis源码深度解析(mybatis源码详细讲解)

mybatis源码深度解析(mybatis源码详细讲解)

一、前言1、mybatis框架图如上为mybatis的框架图,在这篇文章中通过源码来重点看下数据处理层中的参数映射,SQ...

2022-10-29 12:00:28查看全文 >>

mybatisplus优缺点(mybatis优缺点)

mybatisplus优缺点(mybatis优缺点)

在之前发表的文章中有说过mybatis,没看过的可以去看一看,今天来说一说他的升级版本,简而言之,就是mybatis-p...

2022-10-29 11:54:17查看全文 >>

mybatis基础知识整理(mybatis初学者基础知识)

mybatis基础知识整理(mybatis初学者基础知识)

Mybatis简介原始jdbc操作(查询数据)原始jdbc操作(插入数据)原始jdbc操作的分析原始jdbc开发存在的问...

2022-10-29 12:07:42查看全文 >>

mybatis菜鸟教程(mybatis学习手册)

mybatis菜鸟教程(mybatis学习手册)

mybatis基本配置及执行使用了mybatis首先需要两个配置文件,一个是mybatis-config.xml,是my...

2022-10-29 11:29:14查看全文 >>

mybatis工作原理通俗理解(mybatis真实原理)

mybatis工作原理通俗理解(mybatis真实原理)

作者:vivo互联网服务器团队-Zhang Peng一、MyBatis 完整示例这里,我将以一个入门级的示例来演示 My...

2022-10-29 11:27:50查看全文 >>

mybatis插入时间参数(mybatis接收日期参数)

mybatis插入时间参数(mybatis接收日期参数)

介绍MyBatis Generator的作用就是根据数据库中的表结构,帮我们自动生成和表结构相同的实体类,mapper接...

2022-10-29 12:02:57查看全文 >>

mybatis底层原理分析(mybatis底层原理图)

mybatis底层原理分析(mybatis底层原理图)

此篇文章讲述了MyBatis的原理,非常简单却很实用。持续分享Java技术干货,欢迎关注我。前言MyBatis 是一个被...

2022-10-29 11:32:36查看全文 >>

mybatis官方文档中文(mybatis免费)

mybatis官方文档中文(mybatis免费)

官网地址:https://github.com/mybatis/mybatis-3一个简单的mybatis-demo简概...

2022-10-29 11:32:46查看全文 >>

文档排行