ssm框架之spring的bean作用域,生命周期,后置处理器,连接池,自动装配

网页左边,向下滑有目录索引,可以根据标题跳转到你想看的内容

1、Bean的作用域

上节链接,本节与上节内容相连https://blog.csdn.net/grd_java/article/details/104703294

首先需要了解一下几个概念,这里我重写了Car实体类的无参构造,添加了输出语句System.out.println(“Car类构造器被调用”)
单例bean
  • 单例就是一种设计模式,当我们要创建使用同一个类成百上千次时,new 100甚至1000个对象肯定是不现实的,这时就出现了单例,就是我们使用某个类时,只使用它直接提供的对象,那么不论在何时,都使用同一个对象(同一个实例),将100个1000个变为1个,自然提升效率,这就是单例设计模式。
    • 而在spring容器中,单例bean会在容器初始化时被创建
    • 无论何时获取这个bean,都不会再创建新的bean,外界始终获取同一个实例
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
原型多例bean

多例就是,每获取一次就调用构造方法创建一个bean实例,初始化容器时,不会创建对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Web环境下的bean
    • request
      如果将scope属性值设置为request,那么这个bean实例会在客户端每次进行Http请求时创建,这是在WebApplicationContext环境下使用的,暂时了解即可
    • session
      如果设置为session,那么这个bean会在客户端与服务器的每一次会话中创建一个bean,不同会话创建不同对象,同一会话始终使用同一对象
      一次会话包含若干次请求与响应,只有客户端或服务器终止会话,才算会话结束,同样在WebApplicationContext环境下使用

2、Bean的生命周期

在这里插入图片描述
在这里插入图片描述

3、Bean的后置处理器

就是在初始化方法前后执行一些处理的类,可以对bean对象直接做逻辑处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、C3P0连接池配置

c3p0是一个实现数据库连接池的jar包,因为个人认为特别的好用所以使用c3p0。如果你使用的是其他jar包,可照猫画虎,原理相同。
首先,c3p0的实现是通过ComboPooledDataSource类对象进行配置连接池的,使用之前需要先导入c3p0的jar包
  • 直接配置

在这里插入图片描述
进行如下配置即可
在这里插入图片描述

  • 引用外部文件配置(实际开发使用这种方式)
    需要context命名空间在这里插入图片描述
创建外部文件,将信息写在外部文件中,起到解耦的作用(其实文件中都是key=value的形式,就是使用键值对保存数据,xml中可使用${key}的形式根据键引用相应value)

在这里插入图片描述
获取外部文件,并引用其中信息在这里插入图片描述

5、自动装配

以往我们介绍的创建bean对象的方法都是手动装配的,接下来介绍如何自动装配组件,但并不是说,学习完自动装配后就全部使用自动装配来创建对象,而是将两种装配方式融汇贯通,不同的使用场景选择合适的装配方式
通过注解标识组件
当我们某个类需要自动装配时,得先告诉spring需要自动装配的类有哪些,我们可以通过注解标识这些类,标识后,spring就可以找到这些类,在eclipse中,标识成功的类左上角会有一个s标记
  • 第一步:导包并使用注解标识需要装配的类
    如果想使用spring的注解,必须导入AOPjar包在这里插入图片描述
    在这里插入图片描述
    • 第二步:开启spring的自动扫描,才能将标识的类扫描出来
      在这里插入图片描述
用来标识的注解有4种

虽然随便使用哪个注解都可以将类标识,但我们最好遵循规则,根据类的不同功能和层次,使用不同的注解标识,这样可读性更好,尤其之后一些功能也需要使用特定注解标识,比如SpringMvc中的前端控制器必须使用

  • @Controller
    注解标识,而这个类遵循MVC设计模式也必须处于控制层
  • @Controller
    一般用来标识控制层的类,就是处理客户端请求的内一层
  • @Service
    一般用来标识业务逻辑层,就是处理业务逻辑的内一层
  • @Repository
    一般用来标识持久化层,就是操作底层资源的比如操作数据库的类
  • @Component
    一般用来标识普通的实体类,就是不属于上面3层的类
  • 通过注解自动注入的类会有一个默认id名,就是类名的首字母小写,也可以通过指定注解参数设置id值:@Component(value=“car”)
按规则扫描类

只扫描符合特定规则的类在这里插入图片描述
不扫描特定规则的类
在这里插入图片描述

测试是否自动装配成功
当使用注解标识的类被扫描到容器中时,就会自动装配bean到容器中,这些bean的id默认是类的首字母小写形式,如果想自定义id,在注解中设置参数value即可,例如:@Component(“自定义id值”)就相当于我们无需手写bean,而是spring根据我们的注解,找到指定类自动将其注入到容器中。

在这里插入图片描述

@Autowired:为成员变量,构造函数,set方法自动装配
@Autowired注解是给指定对象装配组件的注解,例如,我们容器中有Car这个bean,而我们在其他某个类中现在有一个属性需要用到这个bean,莫非还得在写一堆代码获取后在给属性赋值么?显然这么做效率不高,这时就有了这个注解,它会先根据我们这个属性的类型到容器中找相应的bean,只有一个就直接赋值,若有多个,就将属性名当成id名进行比较,找到id相应的赋值,没有就报错。

但是如果容器没有对应的bean就只能报错么,我们在使用注解时,为其指定属性@Autowired(required = false),那么,如果这个容器中没有对应bean,就会赋一个null,而不报错如果有多个类型兼容的bean,可以在注解下方在添加一个注解@Qualifier("id值"),将根据id进一步更明确的指定bean装配在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SSM框架是由SpringSpringMVC和MyBatis三个框架组成的,其中Spring是整个框架的核心,SpringMVC负责Web层的处理,MyBatis则是数据访问层的框架SpringSpring Boot都是Spring系列框架的一部分,它们在SSM框架中的作用如下: 1. Spring框架:作为整个SSM框架的核心,它提供了IoC容器、AOP等功能,使得整个应用程序的各个组件之间能够松耦合地协同工作。 2. Spring Boot框架:它是Spring框架的扩展,可以快速开发和部署独立的Spring应用程序,不需要手动配置,只需要简单地引入依赖,即可自动配置Spring应用程序。 在SSM框架中,SpringSpring Boot的主要作用如下: 1. IoC容器:Spring提供了IoC容器,使得各个组件之间的依赖关系得以注入,降低了程序的耦合度。 2. AOP:Spring提供了AOP(面向切面编程)功能,可以实现跨越多个对象的功能复用,例如事务管理、日志记录等。 3. MVC框架SpringMVC是一个Web应用程序框架,它基于MVC设计模式,可以将请求和响应分离,使得程序的结构更加清晰。 4. 数据访问层:MyBatis是一个优秀的Java持久化框架,它可以将Java对象和数据库表进行映射,提供了灵活的SQL映射配置方式,能够有效地减少数据库访问的代码量。 5. 快速开发和部署:Spring Boot提供了自动配置功能,可以快速开发和部署独立的Spring应用程序,提高了开发和部署的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值