Spring6快速入门

Spring6快速入门

各工具版本要求:

JDK:Java17+
Maven:3.6+
Spring:6.0.9

简介

Spring是一个控制反转(IOC),面向切面(AOP)编程的轻量级框架。
2002年,Rod Johnson首次推出Spring框架的雏形,interface21(https://interface21.io/)
2004年3月24日,Spring以interface21框架为基础,经过重新设计,发布了1.0正式版。

官网:http://spring.p2hp.com
官方文档地址:https://docs.spring.io/spring-framework/docs/
GitHub:https://github.com/spring-projects/spring-framework


Spring Framework

特点

🚀Spring是一个开源、轻量级,非入侵式的框架。(非入侵:Spring对应用程序本身的结构影响非常小)

🚀控制反转(IOC):把创建对象过程交给Spring管理

🚀面向切面(AOP):AOP用来封装多个类的公共行为,将那些与业务无关但和业务模块共同调用的逻辑封装起来,减少系统的重复代码,降低模块之间的耦合度,另外AOP还解决一些系统层面上的问题,比如日志、事务、权限等。

🚀容器:Spring IOC是一个容器,它可以降低使用门槛,提高开发效率

🚀组件化:使用简单的组件配置合成复杂的应用,在Spring中可以使用XML和java注解组合这些对象。

🚀一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。

组成

Spring Core(核心容器)

spring core提供了IOC, DI, Bean配置装在创建的核心实现。核心概念:Beans, BeansFactory、BeanDefinitions、ApplicationContext.

spring-core:IOC和DI的基本实现
spring-beans:BeanFactory和Bean的装配管理(BeanFactory)
spring-context:Spring context上下文,即IOC容器(ApplicationContext)
spring-expression:spring表达式语言

Spring AOP
spring-aop:面向切面编程的应用模块,整合ASM、 CGLib、 JDK proxy
spring-aspects:集成AspectJ, AOP应用框架
spring-instrument:动态Class Loading模块

Spring Data Access
spring-jdbc:spring对JDBC的封装,用于简化jdbc操作
spring-orm:java对象与数据库的映射框架
spring-jms:Spring对Java Message Service(java消息服务)的封装,用于服务之间相互通信
spring-tx:spring jdbc事务管理

Spring Web
spring-web:最基础的web支持,建立于spring-context之上,通过servlet或listener来初始化IOC容器
spring-webmvc:实现web mvc
spring-websocket:websocket是Html5新增加特性之一,目的是浏览器与服务端建立全双工的通信方式,解决http请求-响应带来过多的资源消耗。
spring-webflux:Spring5.0提供的,用于取代传统Java servlet,非阻塞式Reactive Web框架,异步, 非阻塞,时间驱动事务。

Spring Message
Spring-messaging: spring4.0提供的, 为spring集成一些基础的报文传送服务。

Spring test
spring-test:集成测试支持,主要是对junit的封装。


第一个Spring6工程

步骤

创建maven聚合工程

在这里插入图片描述

引入spring6相关依赖

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.9</version>
</dependency>

创建类,定义属性和方法

public class User {

    public void add(){
        System.out.println("add....");
    }
}

按照spring要求创建配置文件(xml格式)

在这里插入图片描述

在spring配置文件中配置内容

<?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">
<!--完成user对象创建,
    bean标签
       id属性:唯一标识
       class属性:要创建对象所在类的全路径(包名称+类名称)
-->
    <bean id="user" class="com.louis.User"></bean>
</beans>

测试

@Test
public void test(){
    //加载spring配置文件,对象创建,参数是创建的xml文件
    ApplicationContext context = new ClassPathXmlApplicationContext("testSpring.xml");
    //获取创建的对象,getBean,其中的参数是在xml文件中id的属性值,转换为与自己创建的相应的对象
    User user = (User)context.getBean("user");
    //使用对象调用方法进行测试
    user.add();
}
 /*add....*/

总结

在上面使用的方式中可以看出,获取内容没有使用new关键字去创建对象,而是使用了反射。

执行过程

① 加载bean.xml配置文件
② 对xml文件进行解析操作
③ 获取xml文件bean标签中的属性值(id、class)
④ 使用反射根据全路径创建对象

Class clazz = Class.forName(class属性值)
 //1、获取类的Class对象(字节码文件)
Class<?> clazz = Class.forName("com.louis.User");
//2、调用方法创建对象
//Object o = clazz.newInstance();过时用法
User user = (User)clazz.getDeclaredConstructor().newInstance();

在Spring中创建对象,会将创建好的对象放入DefaultListableBeanFactory对象的Map集合中。

Map<String, BeanDefinition> beanDefinitionMap;
//key:唯一标识,value:类的定义(描述信息)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值