Spring学习笔记(一)

本文深入探讨了Spring框架的核心概念,包括控制反转(IOC)和依赖注入(DI),解释了Beanfactory和ApplicationContext的区别以及如何通过XML配置管理Bean的生命周期。此外,还介绍了如何使用注解简化对象创建和属性注入,以及Bean的作用域和生命周期管理。Spring的这些特性使得应用程序更加灵活和易于维护。
摘要由CSDN通过智能技术生成

Spring是什么
Spring意为春天,Spring生于2002年,由Rod Johnson创作。Spring是一个集众多设计模式(工厂设计模式,代理设计模式,策略设计模式)于一身的开源的,轻量级的项目管理框架。致力于JavaEE轻量级解决方案。

SPring的特点:
(1)方便解耦,简化开发
(2)Aoρ编程支持
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作
(6)降低API开发难度

IOC容器

什么是IOC?
	(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring进行管理
	(2)使用IOC目的:为了耦合度降低
	(3)做入门案例就是IOC实现
IOC底层原理:
	xml解析、工厂模式、反射
  • [IOC过程 ] 在这里插入图片描述

    IOC(接口)

    1. IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
    2. Spring提供IOC容器实现两种方式:(两个接口)
      (1) Beanfactory:IOC容器基本实现,是 Spring内部的使用接ロ,不提供开发人员进行使用
      * 加载配置文件时不会创建对象,在获取(使用)对象才去创建对象
      (2)Application Context: Beanfactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
      * 加载配置文件时就会创建配置文件对象

IOC操作bean管理

基于XML创建对象
	在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
	创建对象时,默认执行无参构造方法完成对象创建
基于XML方式注入属性
	1. DI:依赖注入,就是注入属性(需在创建对象基础之上  )
		a. 使用set方法注入
			i. 创建类,定义属性和对应的set方法
			ii. 在spring配置文件配置对象创建,配置属性注入
		b. 使用有参构造进行注入
			i. 创建一个类,定义属性,创建属性对象有参构造方法
			ii. 在spring配置文件中进行配置
		c. P名称空间注入
			i. 使用p名称空间注入,可以简化基于xml配置方式
基于XML注入其他类型属性
	1. 字面量:
		a. null值
<property name="address">
	<null/>
</property>
<!--向属性中输入空值-->
		b. 属性值包含特殊符号
<property name="address">
	<value><![CDATA[<<宁夏>>]]></value>
</property>
2. 注入属性
	a. 外部bean
		i. 创建两个类service类和dao类
		ii. 在service调用dao里面的方法
		iii. 在spring配置文件中进行配置
	b. 内部bean和级联赋值
		i. 一对多关系:部门和员工
		一个部门有多个员工,一个员工属于一个部门
		部门是一,员工是多
		ii. 在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示
3. 级联赋值
	a. 第一种写法:
<bean id = "emp" class = "com.yun.spring5.bean.Emp">
<property name = "ename" value = "Stark"></property>
<property name = "gender" value = "男"></property>
<property name = "dept" value = "dept"></property>
</bean>
<bean id = "dept" class = "com.yun.spring5.bean.Dept">
<property name = "dname" value = "测试"></property>	
</bean>
</beans>
	b. 第二种写法:(生成dept的get方法)
<bean id="emp" class="com.yun.spring5.bean.Emp">
<property name="ename" value="Stark"></property>
<property name="gender" value=""></property>
<property name="dept" ref="dept"></property>
<property name="dept.dname" value="研发部"></property>
</bean>
<bean id="dept" class="com.yun.spring.bean.Dept">
<property name="dname" value="后勤部"></property>
</bean>
</beans>

XML注入属性

1. 注入数组类型属性
	a. 创建类,定义数组,list,map,set类型属性,生成对应set方法
	b. 在spring配置文件中配置
2. 注入List集合类型属性
3. 注入Map类集合属性

注意:在集合中设置对象类型值

IOC操作bean管理(Factory Bean)

  1. Spring有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)

  2. 普通bean:在spring配置文件中,定义bean类型就是返回类型

  3. 工厂bean:在Spring配置文件中定义的bean类型可以和返回的类型不一样

    a. 创建一个类,让这个类作为工厂bean,实现接口FactoryBean
    b. 实现接口里的方法,在实现的方法中定义返回的bean类型
    

IOC操作Bean管理(bean作用域)


  1. 在spring里,设置创建bean实例是单实例还是多实例

  2. 在spring里,默认情况下,bean是一个单实例对象

  3. 如何设置单实例还是多实例

    a. 在spring配置文件bean标签有属性(scope)用于设置单实例还是多实例
    b. scope属性值(scope有多个值,常用的有两个)
    	i. singleton(默认值)
    	ii. prototype(表示是多实例对象)
    	iii. Request
    	iv. session
    c. singleton与prototype的区别
    	i. singleton是单实例,prototype是多实例
    	ii. 设置scope值是singleton时候,加载spring配置文件时会创建单实例对象
    	iii. 设置scope值是prototype时,不是在加载spring配置文件时创建对象,在调用getBean方法时创建多实例对象
    

IOC操作Bean管理(bean生命周期)


  1. 生命周期

    a. 从对象的创建到对象销毁的过程
    
  2. bean的生命周期

    a. 通过构造器创建bean实例(无参数构造)
    b. 为bean的属性设置值和对其他bean的引用(调用set方法)
    c. 把bean实例传递bean后置处理器的方法
    d. 调用bean初始化的方法(需要进行配置初始化的方法)
    e. 把bean实例传递bean后置处理器的方法 postProcessAfterInitialization
    f. bean可以使用了(对象获取到了)
    g. 当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁方法)
    
  3. 演示bean的生命周期

  4. 演示后置处理器效果

     a. 创建类,实现一个接口 BeanPostProcessor,创建后置处理器
    

Spring针对Bean管理中创建对象提供注解


1. @Component
2. @Service
3. @Controller
4. @Repository

四个注解功能是一样的,都可以用来创建bean实例

基于注解方式实现对象创建

  1. 引入依赖
  2. 开启组件扫描
  3. 创建类,在类上面添加创建对象注解

基于注解方式实现属性注入

  1. @AutoWired:根据属性类型进行自动装配

    a. 创建service和dao对象,在类上添加创建对象注解
    
  2. @Qualifier:根据属性名称进行注入

     这个@ Qualifier注解的使用,和上面@ Autowired一起使用
    

名词注释:
轻量级解决方案:提供一个简单的,统一的,高效的方式构造整个应用,并且可以将单层框架以最佳的组合撮合在一起建立一个连贯的体系。

  • bean标签属性:
    1. id属性:唯一标识
    2. class属性:创建对象所在类的全路径
    3. name属性:使用中可加特殊符号

纯注解开发是后期开发中最常用的方式

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

说书客啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值