Spring5框架—2021.2.26
Posted 正好没事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring5框架—2021.2.26相关的知识,希望对你有一定的参考价值。
Spring概述
Spring是轻量级的开源的JavaEE框架;
Spring可以解决企业应用开发的复杂性;
Spring有两个核心部分:IOC和AOP,IOC:控制翻转,把创建对象过程交给Spring进行管理;AOP:面向切面,不修改源代码进行功能增强;
特点:方便解耦,简化开发;AOP编程的支持;方便程序测试;方便集成其他框架;方便进行事务操作;
IOC容器(Inversion of Control, 控制反转)
概念和原理:控制反转,把对象创建和对象之间的调用过程交给Spring进行管理,降低耦合度。
底层原理:xml解析、工厂模式、反射
IOC:ioc思想基于IOC容器完成,IOC容器底层就是对象工厂;
Spring提供IOC容器实现的两种方式(两个接口):BeanFactory,IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用,加载配置文件时不会创建对应的对象,在获取(使用)对象时才去创建对象;AppilcationContext,BeanFactory接口的子接口,提供更多更强大的功能,加载配置文件时就会把配置文件对应的对象进行创建。
AppilcationContext中包含两个实现类:FileSystemXmlApplicationContext,从项目工作路径(即项目的根目录)加载配置文件;ClassPathXmlApplicationContext,默认从项目的classpath下相对路径加载配置文件。
IOC操作-bean管理
基于xml方式创建对象;
在Spring配置文件中,使用bean标签并添加对应属性,实现对象创建。bean标签中的常见属性id(唯一标识)、class(需要被创建类的全路径)、name(与id相似,但id中不可以加特殊符号)等。创建对象时,默认执行无参构造方法。
<bean id="user" class="com.zxc.Spring5.User"></bean>
基于xml方式注入属性;DI,依赖注入,就是注入属性。
DI是IOC中一种具体实现,就表示依赖注入。一是使用set方法进行注入(设置属性值),另一种使用有参构造进行注入;
<!--使用set方法进行注入-->
<!--首先,类中要声明了属性的set方法;其次使用此方法之前,对象要被创建-->
<bean id="user" class="com.zxc.Spring5.User">
<!--name属性表示要注入的属性名-->
<property name="name" value="自行车" ></property>
</bean>
<!--使用有参构造进行注入-->
<!--类中的构造函数-->
public User(String myName, int myAge){
name = myName;
age = myAge;
}
<!--xml配置文件-->
<bean id="user" class="com.zxc.Spring5.User">
<!--constructor-arg的个数要与构造函数中的参数一致,name属性要与构造函数的参数相同-->
<!--还包含index属性,表示该参数在构造方法中的索引值-->
<constructor-arg name="myName" value="自行车"></constructor-arg>
<constructor-arg name="myAge" value="15"></constructor-arg>
</bean>
<!--简化 用set方法进行注入 p名称空间注入--->
<!--首先在xml配置文件中添加p名称空间-->
xmlns:p="http://www.springframework.org/schema/p"
<bean id="user" class="com.zxc.Spring5.User" p:name="自行车">
</bean>
<!--xml注入其他类型属性-->
<!--字面量-->
<bean id="user" class="com.zxc.Spring5.User">
<!--①null-->
<property name="name">
<null></null>
</property>
<!--②属性值包含特殊字符 a可以通过转义字符 b如下-->
<property name="name">
<!--将name设置为<<阿斯达>>-->
<value><![CDATA[<<阿斯达>>]]></value>
</property>
</bean>
以上是关于Spring5框架—2021.2.26的主要内容,如果未能解决你的问题,请参考以下文章