Spring6 入门案例

目录

一. Spring6 入门

1.1 环境要求

1.2 构建模块

1.2.1 构建父模块spring6

1.2.2 构建子模块spring6-first

1.3 程序开发

1.3.1 引入依赖

1.3.2 创建Java类

1.3.3 创建配置文件

1.3.4 创建测试类测试

1.3.5 运行测试程序

1.4 程序运行分析

1.4.1 底层如何创建对象

1.4.2 Spring如何创建对象及原理

1.4.3 创建好的对象如何存储


一. Spring6 入门

1.1 环境要求

  • IDEA:2021.1
  • JDK:Java17+
  • Maven:3.6+
  • Spring:6.0.2

1.2 构建模块

1.2.1 构建父模块spring6

在idea中,依次单击 File -> New -> Project -> New Project

点击“Finish”完成

删除src目录 

1.2.2 构建子模块spring6-first

点击“Finish”完成 

1.3 程序开发

1.3.1 引入依赖

添加依赖:

<dependencies>
    <!--spring context依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>6.0.2</version>
    </dependency>
</dependencies>

查看依赖:

1.3.2 创建Java类

package com.demo.spring6.bean;

public class Helloworld {

    public void sayHello(){
        System.out.println("hello World");
    }
}

1.3.3 创建配置文件

在resources目录创建一个 Spring 配置文件 beans.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">

    <!--
    配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理
    通过bean标签配置IOC容器所管理的bean
    属性:
        id:设置bean的唯一标识
        class:设置bean所对应类型的全类名
	-->
    <bean id="helloWorld" class="com.demo.spring6.bean.Helloworld"></bean>

</beans>

1.3.4 创建测试类测试

创建测试类,首先添加junit测试依赖:

    <!--junit5测试-->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.3.1</version>
    </dependency>

编写测试类 TsetDemo:

package com.demo.spring6.bean;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorldTest {

    @Test
    public void testHelloWorld() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        Helloworld helloWorld = (Helloworld) context.getBean("helloWorld");
        helloWorld.sayHello();
    }
}

1.3.5 运行测试程序

1.4 程序运行分析

1.4.1 底层如何创建对象

修改HelloWorld类:添加一个无参构造后运行程序

public Helloworld() {
        System.out.println("无参数构造方法执行");
    }

 运行结果:

 测试得知:创建对象时调用了无参数构造方法

1.4.2 Spring如何创建对象及原理

 // dom4j解析beans.xml文件,从中获取class属性值,类的全类名
 // 通过反射机制调用无参数构造方法创建对象
 Class clazz = Class.forName("com.atguigu.spring6.bean.HelloWorld");

 //Object obj = clazz.newInstance();

 Object object = clazz.getDeclaredConstructor().newInstance();

1.4.3 创建好的对象如何存储

bean对象最终存储在spring容器中,在spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:

private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);

Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中, Map<String,BeanDefinition> , 其中 String是Key , 默认是类名首字母小写 , BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。


与其追寻全世界的骏马,不如种植丰美的草原,到时候骏马自然来。

                                                                                           ——《俞敏洪:愿你的青春不负梦想》

少一些自怨自艾,试着去改变自己。当你变得更好了,周围的环境也就会渐渐地好起来。

2023-4-24 于北京


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码云说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值