一. 初识Spring框架
① Spring的概念:
(1)Spring 是一个开源轻量级的企业级应用框架
(2)企业应用开发的"一站式"选择,贯穿于表现层、业务层、持久层
(3)Spring的优点 :
a. 低侵入式设计
b. 独立于各种应用服务器
c. 依赖注入特性将组件关系透明化,降低耦合度
d. 面向切面编程特性允许将通用任务进行集中式处理
e. 与第三方框架的良好整合
② Spring体系结构:
(1)核心容器(Core Container):包括BeanFactory和ApplicationContext,它们提供了Spring框架的基本功能,如依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)。
(2)AOP(Aspect-Oriented Programming):通过使用代理模式和动态代理技术,Spring框架支持面向切面编程,可以将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,实现更好的代码复用和模块化。
(3)数据访问/集成(Data Access/Integration):Spring提供了对各种数据访问技术的支持,包括JDBC、ORM(如Hibernate、MyBatis)和事务管理等。
(4)Web(Web):Spring框架提供了对Web应用程序开发的支持,包括MVC框架、RESTful Web服务和 WebSocket 等
(5)测试(Testing):Spring框架提供了对单元测试和集成测试的支持,可以方便地进行自动化测试。
③ Spring设计理念
(1)是面向 Bean 编程
(2)Spring两大核心技术:
a. 控制反转(IoC:Inversion of Control) / 依赖注入(DI:Dependency Injection)
b. 面向切面编程(AOP:Aspect Oriented Programming)
![](https://i-blog.csdnimg.cn/blog_migrate/bf6cb80f9beef43d9796e4121cb2cd93.png)
二 . 搭载Spring的开发环境
① 下载jar包,并引入到项目中
a. 到Spring官网(Spring | Home)下载需要的 jar包版本,再导入项目中
b. 如果使用的是Maven项目,可以直接再项目中的 pom.xml 文件中导入需要的jar包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.7.RELEASE</version> <!--写入自己需要的Spring版本-->
</dependency>
</dependencies>
② 编写Spring配置文件
(1)创建 applicationContext.xml 文件
(2)在刚创建的 applicationContext.xml 文件中写入核心配置代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
</beans>
注意:Spring配置文件采用schema格式,如上。beans标签是 xml配置文件的根节点;xmlns这些属性都是命名空间,在Beans标签下写一些其他标签,要想被识别,基本都需要导入对应的命名空间,这样才会被识别。
③ 编写测试代码通过Spring进行属性注入
(1)创建实体类User 并写入属性再使用@Data进行封装
package pojo;
import lombok.Data;
@Data
public class User {
private String name;
private String say;
//用户说话的方法
public void show(){
System.out.println(name+" 说了: "+say+" !");
}
}
(2)然后在 applicationContext.xml 中引入外部数据文件并个属性赋值
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--反射模式 通过全路径名 能够拿到类里面所有的属性 class-->
<bean id="user" class="pojo.User">
<property name="name" value="尊嘟假嘟o.O"></property>
<property name="say" value="今天是我学习Spring框架的第一天"></property>
</bean>
</beans>
(3)创建UserTest测试类
package test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pojo.User;
import service.Userservice;
public class UserTest {
@Test
public void testSpring(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //创建核心配置文件对象
User user= (User)applicationContext.getBean("user"); //调用核心配置文件中id为user的方法并强转成User对象
user.show(); //调用实体类User的用户说话方法
}
}
(4)运行结果
三 . IOC 和 AOP
(1)控制反转和依赖注入(IOC-DI)
a. 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。
b. 依赖注入(DI),是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。
传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象
;
IOC是由专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建,程序被动接受对象
,这就叫控制反转;
(2)切面编程 (AOP)
a. AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
b. AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
c. 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,将日志记录,性能统计,安全控制,事务处理,异常处理等相同代码从业务逻辑代码中划分出来,通过对这些行为的分离,可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。提高程序的可重用性,同时提高了开发的效率。
四 . 总结