浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解

这篇具有很好参考价值的文章主要介绍了浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

IOC 控制反转

控制 : 指对对象的创建权
反转: 对象的创建由程序员在类中主动创建变为由Spring自动创建

Spring方式:所有的对象都是由Spring框架提前创建出来,存储到一个容器中,servlet需要Service了,就向Spring要一个

技术的作用 : 通过底层反射原理来解开对象之间的耦合

Bean的创建

注解 @Component

支持使用value属性指定beanbean在容器中的唯一标识
当我们不写时,它的默认值是当前类名首字母改小写

@Component的三个衍生注解

@Controller 用来标记是控制层类,并且添加到Spring容器中
@Service 用来标记是业务层类,并且添加到Spring容器中
@Repository 用来表姐是持久层类,并且添加到Spring容器中

PS: 当一个类实在不好归属在这三个层上时,再使用@Component

Bean作用范围

@Scope

在类上使用@Scope注解定义Bean的作用域,Spring支持如下五种作用域,我们目前常用的是第一种,默认是第一种单例模式
singleton 单例,对于一个类,只会创建一个对象,每次从容器中获取,拿到的都是这个对象 此模式下创建的对象是同一个,地址是一样的,可以通过==运算符进行判断
prototype 多例,对于一个类,每次从容器中获取,都会创建一次,得到一个新的对象
request 在web环境中,每个请求范围内会创建新的对象
session 在web环境中,每个会话范围内会创建新的对象
application 在web环境中,每个应用范围内会创建新的对象

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

Bean创建时机

默认情况下,使用的是单例模式,对象会随着容器的启动自动创建,也就是立即创建,但是可以通过注解来控制bean对象的创建时机@Lazy使对象的创建成为延迟加载的方式,即使用时再进行创建
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

Bean获取

Spring容器启动时,会把其中的bean都创建好,如果想要主动获取这些bean,可以使用容器getBean()方法
getBean(“id”) 使用bean的id从容器中查找对象(最多)
getBean(Bean.class) 使用bean的class类型从容器中查找对象(一般是父类或父接口类型)
getBean(“id”,Bean.class) 使用bean的id和class类型从容器中查找对象

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

3中常见报错及解决方案

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入
ps : 还有 SpringConfig 类的包扫描 @CompentenScan(“com.itheima”)

因此还要检查确定包扫描的范围

DI 依赖注入

解释:依赖注入就是对对象中的属性进行赋值

假如有一个父接口studentService为例,有其实现类StudentServiceImpl,使用依赖注入可以将实现类的属性值自动注入到父类对象中。
或者以StudentDao接口为例,在业务层中定义StudentMapper父接口类型,可以使用依赖注入让程序在执行过程中动态创建StudentMapper实现类并将属性值动态注入到父接口中,从而来达到降低耦合的效果。

@Autowired注解

@AutoWired 注解 标注在对象的声明上,表示自动注入该对象
标注在属性上,表示自动依赖注入,Spring会根据被标注对象的类型自动从IOC容器中查找
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

两个常见问题

如果找不到,就会报错 NoSuchBeanDefinitionException
如果恰好找到一个,就会自动完成依赖注入
如果找到了多个,也会报错 NoUniqueBeanDefinitionException

多个实现类—2种解决方案

① @Qualifier
标注在要赋值的属性上,代表在按照类型匹配的基础上,再按照指定名称匹配
注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入
② @Primary
@Primary标注在实现类上,表示当一个接口有多个实现的类时,默认使用哪个作为主实现
注意:在同一个接口下,不能同时在多个实现类设置
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

③ 轻松一刻

这里就用到了老师讲的一个例子,多个实现类的自动装配就好比一个男生和多个女生相亲一样,当男生这边没考虑好要选那个当女朋友时,媒人@Primary的作用就来了,媒人会主动推荐一个供你选择,当@primary和@Qualifier同时存在时问题又来了,听媒人的还是自己喜欢的,最终的决定权当然还是在男生手中@Qulifier(“选择”)选择谁,谁就作为实现类。

关于报错排查步骤

  1).要确定类上使用了@Component注解(衍生注解)
  2).要确定此类实现了接口
  3). 要确定包扫描

管理第三方Bean

如果这个类不是我们自己写的,是第三方通过jar包提供,
我们无法改动类添加注解,此时应该怎样创建对象放入Spring容器呢?
这时候就用到了@Bean注解了,下面我们使用DruidDataSource对象的创建来演示这个注解的使用

@Bean 注解

@Bean:写在方法上,表示将该方法的返回对象放到Spring容器中,在容器中的标识默认是方法名
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

配置类优化

所有的@Bean都可以写在Springconfig配置类下,但是这样看起来或许会分不清哪个配置是起的什么作用,这时候又有一个注解@Configration可以将各自的@Bean单独存放起来,一下子是不是就明朗了起来!

@Configuration:写在类上,表示该类是一个配置类,Spring在启动的时候会自动扫描加载类中的配置
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

Spring整合Mybatis

在Mybatis的配置文件中有两个比较重要的配置 毫无疑问,就是数据库环境datasource数据源以及mapper的位置相关配置
再有就是Mybatis的工具类中的 SqlSessionFactory 工厂 SQLSession会话 以及 通过瑟瑟诶on获取mapper 事务的提交和连接的关闭这些

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

整合思想

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

整合实现

持久层实现

准备数据库和数据表
创建工程,添加依赖
创建实体类
创建Mapper接口,编写查询列表方法
创建配置类,配置mapper位置、数据源、sqlSessionFactory
创建测试类,获取Mapper对象,测试查询方法

业务层实现

创建service接口,编写查询列表方法
创建service实现类,注入mapper对象,编写查询列表方法
创建测试类,获取service对象,测试查询方法

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

测试类优化

pring对Junit的单元测试进行了封装,形成了自己的单元测试
使用Spring单元测试,代码更加简单

这就又需要两个注解 @RunWith(SpringJUnit4ClassRunner.class)

相当于Spring的启动 ACAC context = new ACAC();

和注解 @ContextConfiguration(classes = SpringConfig.class)

相当于ACAC()的参数配置类
浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入

注解及作用总结

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解,IDEA-Java各开发环境安装和常见问题解决,spring,mybatis,java,Spring整合Mybatis,IOC 控制反转,DI 依赖注入文章来源地址https://www.toymoban.com/news/detail-603083.html

到了这里,关于浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring IoC&DI(2)

    通过上面的案例, 我们已经知道了IoC和DI的基本操作, 接下来我们来系统地学习Spring IoC和DI的操作. 前面我们提到的IoC控制反转, 就是将对象的控制权交给Spring的IoC容器, 由IoC容器创建及管理对象.  ( 也就是Bean的存储 ). 我们之前只讲到了@Component注解来使得对象交给IoC容器管理

    2024年04月10日
    浏览(35)
  • 什么是IoC?什么是Spring IoC?什么是DI?

    首先说明 IoC 是一种思想,IoC的全称是Inversion of Control,翻译成中文叫做 “控制反转” 用人话来说,IoC的思想就是将一个对象对另一个对象的控制权交出去(不必关心交给谁),从而让对象之间的依赖关系降低,降低代码之间耦合程度。 我们可以写一个简单的代码来举个例子

    2024年02月14日
    浏览(40)
  • 【Spring篇】IOC/DI注解开发

    🍓系列专栏:Spring系列专栏 🍉个人主页:个人主页 目录 一、IOC/DI注解开发 1.注解开发定义bean  2.纯注解开发模式 1.思路分析 2.实现步骤 3.注解开发bean作用范围与生命周期管理 1.环境准备 2.Bean的作用范围 3.Bean的生命周期 4.注解开发依赖注入 1.环境准备 2.注解实现按照类型注入

    2024年02月03日
    浏览(62)
  • 一文吃透 Spring 中的IOC和DI

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SSM 框架从入门到精通 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:一文吃透 Spring 中

    2024年01月25日
    浏览(41)
  • Spring框架中IOC和DI详解

    来源黑马Spring课程,觉得挺好的 1、为什么要学习spring? 如果让本人用一句话去回答这个问题,那么我只能说:在J2EE的学习之路上,spring给我带来了开发的春天,让我们从JSP、sevlet的高耦合的开发中彻底的解救出来。 spring是目前最主流的框架 spring是学习后面课程(比如:

    2023年04月15日
    浏览(43)
  • spring--Ioc控制反转/DI依赖注入

    1.概念:在使用对象的时候,由主动的new转换为外部提供对象,将对象创建的控制权交给外部,即控制反转 2.spring提供了一个容器,称为IOC容器,用来从当ioc中的外部 3.被管理或者被创建的对象在ioc中被叫做bean 使用步骤 1.导入依赖 spring-context 依赖,用到xml文件就需导入 2.创建

    2024年02月12日
    浏览(33)
  • Spring框架IOC容器和DI依赖注入

    IOC(Invertion Of Control):控制反转,使用对象时,由使用new创建对象转变为由外部提供对象,此过程中对象的创建控制权由程序转移到外部的思想称之为控制反转. DI(Dependency Injection):依赖注入,在容器中建立bean与bean之间的关系的过程,称之为依赖注入 pom.xml依赖引入 BookDao BookDaoImpl Book

    2023年04月09日
    浏览(73)
  • Spring 是什么?IoC 和 DI的区别

    我们通常讲的Spring指的是Spring Framework(Spring框架),它是一个开源的框架,有着活跃而庞大的社区,这也是它之所谓经久不衰的原因。官方的解读是:Spring官网 翻译过来就是:Spring使Java编程对每个人来说更快、更容易、更安全。Spring对速度、简单性和生产力的关注使它成为全球最受欢

    2024年02月08日
    浏览(31)
  • 【Spring篇】简述IoC入门案例,DI入门案例

    🎊专栏【Spring】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 Spring框架中核心的要属IoC(控制反转)和DI(依赖注入)了。这两大特性是我们入门Spring时首先需要理解掌握的内容。那么IoC和DI的思想是什么?应该如何编写

    2024年02月08日
    浏览(30)
  • Spring中的IOC与DI-细胞内物质与传递

    对IOC的认识 Spring Inversion of Control简称Spring IOC,是一种设计原则,其主导主导思想是:IOC通过自行去查找及注入所需的资源,如依赖对象、常量数据等,而不是在程序中主动去new对象,将对象的控制权从应用程序代码转移到外部容器,在代码中不需要直接创建和管理对象,从

    2024年02月12日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包