
一、Spring框架概述
1.Spring是轻量级的开源的一站式的JavaEE框架
什么是轻量级?不需要大量的jar包,其组件对环境的依赖程度较小。开源即免费,可白嫖
什么是一站式?就是普通项目一般是采用三层架构来搭建的,像mybatis框架只能用来处理数据访问层(持久化层),而这三层架构都可以使用spring框架进行处理
2.Spring可以用来解决企业应用开发的复杂性
3.Spring有两个核心部分:IOC(Inverse of Control控制反转)和AOP(Aspect Oriented Programming 面向切面编程)
(1)IOC:控制反转,把创建对象的过程交给Spring管理
(2)AOP:面向切面:在不修改源代码的前提下,进行功能的增强
4.Spring特点
(1)方便解耦,简化开发
(2)AOP编程支持
(3)方便程序测试
(4)方便和其他框架整合(比如和mybatis框架进行整合)
(5)方便进行事务的操作
(6)降低Java API的开发难度
①Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
②Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
③只需要通过配置就可以完成对事务的管理,而无需手动编程
④可以通过注解方便的测试Spring程序
⑤pring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
⑥Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,降低JavaEE API的使用难度
二、Spring框架的访问和下载,和组成
2.1 访问和下载
官方网站:Spring | Home
下载地址:JFrog
2.2Spring的组成
Spring架构由诸多模块组成,可分类为
-
测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。
-
数据访问:事务,DAO支持,JDBC,ORM。
-
Spring MVC和 Spring WebFlux Web框架。
-
集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。
-
语言:Kotlin,Groovy,动态语言。

| GroupId | ArtifactId | 说明 |
|---|---|---|
| org.springframework | spring-beans | Beans 支持,包含 Groovy |
| org.springframework | spring-aop | 基于代理的AOP支持 |
| org.springframework | spring-aspects | 基于AspectJ 的切面 |
| org.springframework | spring-context | 应用上下文运行时,包括调度和远程抽象 |
| org.springframework | spring-context-support | 支持将常见的第三方类库集成到 Spring 应用上下文 |
| org.springframework | spring-core | 其他模块所依赖的核心模块 |
| org.springframework | spring-expression | Spring 表达式语言,SpEL |
| org.springframework | spring-instrument | JVM 引导的仪表(监测器)代理 |
| org.springframework | spring-instrument-tomcat | Tomcat 的仪表(监测器)代理 |
| org.springframework | spring-jdbc | 支持包括数据源设置和 JDBC 访问支持 |
| org.springframework | spring-jms | 支持包括发送/接收JMS消息的助手类 |
| org.springframework | spring-messaging | 对消息架构和协议的支持 |
| org.springframework | spring-orm | 对象/关系映射,包括对 JPA 和 Hibernate 的支持 |
| org.springframework | spring-oxm | 对象/XML 映射(Object/XML Mapping,OXM) |
| org.springframework | spring-test | 单元测试和集成测试支持组件 |
| org.springframework | spring-tx | 事务基础组件,包括对 DAO 的支持及 JCA 的集成 |
| org.springframework | spring-web | web支持包,包括客户端及web远程调用 |
| org.springframework | spring-webmvc | REST web 服务及 web 应用的 MVC 实现 |
| org.springframework | spring-webmvc-portlet | 用于 Portlet 环境的MVC实现 |
| org.springframework | spring-websocket | WebSocket 和 SockJS 实现,包括对 STOMP 的支持 |
| org.springframework | spring-jcl | Jakarta Commons Logging 日志系统 |
三、Spring的入门案例
1、创建一个maven工程,并在pom.xml文件中导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qf</groupId>
<artifactId>spring-05</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--Spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
<!--测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
</project>
2、在src/main/java/com/ayit目录下创建实体类User
package com.ayit;
public class User {
public User(){
System.out.println("无参构造方法执行");
}
public void addUser(){
System.out.println("创建用户");
}
}
3、在src/main/resources目录下创建application.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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--id:类名,首字母小写 class:类的全限定名-->
<bean id="user" class="com.ayit.User"></bean>
</beans>
4.编写测试类
import com.ayit.User;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTest {
@Test
public void test(){
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) applicationContext.getBean("user");
user.addUser();
}
}
5、结果

6.目录结构:

7.BeanFactory和ApplicationContext的区别
ApplicationContext:它在构建核心容器的时候,创建对象采用的策略是立即加载的方式
BeanFactory:它在构建核心容器的时候,创建对象采用的策略是延迟加载
ApplicationContext是BeanFactory的子接口,对BeanFactory提供了以下扩展</

&spm=1001.2101.3001.5002&articleId=120789504&d=1&t=3&u=3285192bcb15460bb00fe0495785db88)
1488

被折叠的 条评论
为什么被折叠?



