官网: http://spring.io
SpringBootWeb快速入门
1.创建springboot工程,并勾选web开发相关依赖
2.定义HelloController类,添加方法 hello,并添加注解
//请求处理类
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
System.out.println("hello world");
return "hello world";
}
}
3.运行测试
Spring是什么?
Spring是一款主流的Java EE 轻量级开源框架,Spring 由“Spring 之父“RodJohnson 提出并创立,其目的是用于简化Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松合的角度而言,任何Java应用都可以从spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。
Spring的广义和狭义
广义的 Spring: Spring 技术栈
广义上的 Spring 泛指以Spring Framework 为核心的 Spring 技术栈。
经过十多年的发展,Spring 已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Framework、 Spring MVC、SpringBoot、 Spring Cloud、Spring Data、 SpringSecurity 等,其中Spring Framework 是其他子项目的基础
狭义的 Spring: Spring Framework
狭义的 Spring 特指 Spring Framework,通常我们将它称为 Spring 框架
Spring 框架是一个分层的、面向切面的Java 应用程序的一站式轻量级解决方案,它是 Spring 技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。
Spring 有两个最核心模块: IoC和 AOP
loC: Inverse of Control的简写,译为“控制反转”,指把创建对象过程交给 Spring 进行管理
AOP: Aspect Oriented Programming 的简写,译为“面向切面编程”。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。
Spring Framework特点
非侵入式: 使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染,对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
控制反转:IoC--Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源变成环境将资源准备好,我们享受资源注入。
面向切面编程: AOP--Aspect Oriented Programming,在不修改源代码的基础上增强代码功能。
容器: Spring IoC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML和Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统。
一站式:在IoC 和AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且 Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现。
Spring模块组成
Spring 是一个流行的 Java 应用程序框架,提供了全面的基础设施支持来开发 Java 应用程序。它的模块化设计使得开发人员可以根据需要选择和使用特定的模块。以下是 Spring 框架的主要组成模块:
-
Core Container:
- Spring Core:提供核心功能,包括依赖注入(Dependency Injection,DI)机制。
- Spring Beans:用于管理和配置应用程序的 beans。
- Spring Context:提供更高级的特性,如事件传递、资源加载和国际化支持。
- Spring Expression Language (SpEL):提供强大的表达式语言,用于在运行时查询和操作对象图。
-
Data Access/Integration:
- JDBC:简化了 JDBC 操作,并提供了异常处理和资源管理。
- ORM:支持各种 ORM 框架,如 Hibernate、JPA、MyBatis 等。
- OXM (Object/XML Mapping):支持对象到 XML 的映射。
- JMS (Java Message Service):用于消息传递和异步通信。
- Transaction:提供统一的事务管理接口,支持声明式事务管理。
-
Web:
- Spring Web:提供基本的 web 集成功能,如多文件上传、初始化参数处理和上下文启动监听器。
- Spring Web MVC:实现了 Model-View-Controller (MVC) 模式,用于构建 web 应用程序。
- Spring WebFlux:用于构建响应式的 web 应用程序,支持非阻塞式编程模型。
-
AOP (Aspect-Oriented Programming):
- Spring AOP:提供面向切面编程的实现,允许分离跨领域关注点,如事务管理、日志记录和安全。
-
Instrumentation:
- Spring Instrument:提供类工具和代理,支持在应用程序服务器中使用 Spring。
-
Messaging:
- Spring Messaging:提供对 STOMP、WebSocket 等消息传递协议的支持。
-
Test:
- Spring Test:提供对测试功能的支持,包括支持 JUnit 和 TestNG,简化集成测试和单元测试。
此外,Spring 生态系统还包括许多扩展项目,如 Spring Boot、Spring Cloud、Spring Security、Spring Data 和 Spring Batch 等,这些项目进一步增强了 Spring 框架的功能,适用于不同类型的应用场景。
入门案例开发步骤
第一步 引入spring相关依赖
第二步 创建类,定义属性和方法
第三步 按照spring要求创建配置文件 (xml格式)
第四步 在spring配置文件配置相关信息
第五步 进行最终测试
启用Log4j2日志框架
Log4j2日志概述
在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息,能够帮助我们了解并监控系统状态,在发生错误或者接近某种危险状态时能够及时提醒我们处理,同时在系统产生问题时,能够帮助我们快速的定位、诊断并解决问题。
Apache Log4j2是一个开源的日志记录组件,使用非常的广泛。在工程中以易用方便代替了 System.out 等打印语句,它是JAVA下最流行的日志输入工具。
Log4j2主要由几个重要的组件构成:
日志信息的优先级:日志信息的优先级从高到低有
TRACE< DEBUG <INFO<WARN<ERROR<FATAL
TRACE: 追踪,是最低的日志级别,相当于追踪程序的执行
DEBUG: 调试,一般在开发中,都将其设置为最低的日志级别
INFO: 信息,输出重要的信息,使用较多
WARN: 警告,输出警告的信息
ERROR: 错误,输出错误信息
FATAL: 严重错误
日志信息的输出目的地:日志信息的输出目的地指定了日志将打印到控制台还是文件中
日志信息的输出格式:而输出格式则控制了日志信息的显示内容。