Java开发笔记之基于xml配置spring_IOC入门


Spring

一,Spring课程工程构建

1.使用maven创建一个Spring_ioc的项目

二,Spring的内容

1.Spring简介

1.1.Spring是什么

​ Spring是分层的JavaSE/EE/应用full-stack轻量级开源框架,以IoC(Inverse of Controller:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核.

​ 提供展现层SpringMVC持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合世界众多的著名第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架.

1.2.Spring发展历程

Snipaste_2021-03-16_11-21-20

1.3.Spring的优势

​ 1.方便解耦,简化开发

​ 2.AOP编程的支持(面向切面编程)

​ 3.声明式事务的支持

​ 4.方便程序的测试

​ 5.方便集成各种优秀框架

​ 6.降低JavaEE API的使用难度

​ 7.Java源码是经典学习范例

1.4.Spring的体系结构

在这里插入图片描述

2.Spring中IOC容器快速入门

​ IOC容器往里面放bean,往里面取bean,

​ 概述:IOC(inverse of controller:控制反转),这里的控制反转指的是:bean与bean之间的依赖关系,以前如果一个User类依赖对应的Order类,那么在 User类执行功能的过程中,一定会创建Order类的实例,这里就是User类主动创建了Order类,类与类之间的耦合性就会很高,与程序设计原则背离.而IOC容器则是将User类和Order类放在IOC容器中,当User类需要Order类时,就将Order类注入到User类当中,控制权就在IOC的手上,被注入的一方只能被动接受,至此完成了控制权的转换,这一切都是通过spring核心配置文件来完成的.spring核心配置文件通过xml文件来配置(后面讲解通过注解来配置)

例:以dao层的实现类对象为例

  1. 在.pom文件中导入Spring开发的基本包坐标
  2. 编写Dao接口和实现类
  3. 创建Spring核心配置文件
  4. 在Spring配置文件中配置UserDaoImpl(相当于把bean放进容器当中)
  5. 使用Spring的API获得Bean实例

3.Spring配置文件

3.1.通常命名为applicationContext.xml,介绍当中的标签和属性
基本标签:<beans></beans> 用来配置众多的bean
基本标签:<bean></bean> 用来配置具体的bean
  1. 基本属性:id Bean实例在spring容器中的唯一标识
  2. 基本属性:class Bean的全类名名称(底层是通过反射来动态获取对象)
  3. 基本属性:scope 指对象的作用范围,取值如下默认值:singleton(单例的,该Bean只为单例模式,每次都是同一个,当核心配置文件加载完成时,就会创建),prototype(多例的,每次new一个新的实例,每次调用getBean方法创建)
  4. 基本属性:init-method 指定类中的初始化方法名称
  5. 基本属性:destroy-method 指定类中销毁方法名称
  6. 基本属性:factory-method 指定静态工厂中的静态方法(一般用于实例化bean)
  7. 基本属性:factory-bean 指定工厂实例方法来实例化bean
3.2.bean的实例化
  1. 默认无参构造实例化(常用) : 配置好bean后,加载spring核心配置文件后得到应用上下文对象,调用当中的getBean方法,实例化bean
  2. 工厂静态方法实例化(理解) : 创建一个静态工厂类,定义一个静态方法返回需要实例化的bean,将静态工厂类添加到IOC容器当中,实例化该工厂调用该工厂中的静态方法实例化bean.
  3. 工厂实例方法实例化(理解) : 创建一个工厂类,定义一个方法返回需要实例化的bean,将工厂类添加到IOC容器当中,然后通过factory-bean引用,在通过factory-method掉实例方法,达到实例化bean的效果
3.3.依赖注入
3.3.1.依赖注入的方式
  1. set方法注入

    使用到的标签和属性(标签为bean标签的子标签)

注入对象属性

 <property  name="set方法后的方法名" ref="被注入的对象id"></property>

注入普通属性

   <property name="属性名" value="属性值"></property>

注入list集合属性

 <proerty name="属性名">

   <list>

   <value>值1</value>

   <value>值2</value>

   <value>值3</value>

   </list>

 </proerty>

注入map集合属性

   <proerty name="属性名">

   <map>

   <entry key="map集合的键" valueref="map集合的值"></entry>

   <entry key="map集合的键" valueref="map集合的值"></entry>

   <entry key="map集合的键" valueref="map集合的值"></entry>

   </map>

   </proerty>

注入properties集合属性

 <property name="属性名">

   <props>

   <prop key="properties集合的键">值1</prop>

   <prop key="properties集合的键">值2</prop>

   <prop key="properties集合的键">值3</prop>

   </props>

   </property>
  1. 带参构造注入

注入对象属性

 <constructor name="属性名" ref="被注入对象id"></constructor>

注入普通属性

 <constructor name="属性名" value="属性值"></constructor>

注入list集合属性

   <constructor name="属性名">
   
  <list>
   <value>值1</value>

   <value>值2</value>

   <value>值3</value>

   </list>

   </constructor>

注入map集合属性

<constructor name="属性名">

   <map>

   <entry key="map集合的键" valueref="map集合的值"></entry>

   <entry key="map集合的键" valueref="map集合的值"></entry>

   <entry key="map集合的键" valueref="map集合的值"></entry>

   </map>

   </constructor>

注入properties集合属性

 <constructor name="属性名">

   <props>

   <prop key="properties集合的键">值1</prop>

   <prop key="properties集合的键">值2</prop>

   <prop key="properties集合的键">值3</prop>

   </props>

   </constructor>
  1. 命名空间注入(本质为set方法注入)
3.3.2.依赖注入分类
  1. 对象属性注入 例:将dao的实现类注入到service的实现类当中,然后在service实现类中定义方法实现dao实现类的功能

  2. 普通属性注入

  3. 集合属性注入(list,map,properties)

3.4.<import>标签

​ 实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积庞大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载

  例:<import resource="applicationContext-xxx.xml" />

4.Sping相关API

4.1.ApplicationContext接口:代表应用上下文,可以通过其实例获得Spring容器中的Bean对象

实现类:

  1. ClassPathXmlApplicationContext:从类的根路径下加载配置文件,推荐使用这种
  2. FileSystemXmlApplicationContext:从磁盘路径上加载配置文件
  3. AnnotationConfigApplicationContext:使用注解配置容器对象时,需要使用此类来创建spring容器,他用来读取注解

方法:

getBean():

  1. 当参数的数据类型是字符串时,表示根据bean的id从容器中获得bean实例,返回数据类型为Object,需要强转.
  2. 当参数的数据类型是Class类型,表示根据类型从容器中匹配bean实例,当容器中相同的类型的bean有多个时,则此方法会报错.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值