Spring源码解析(以及HelloWord)

阅读 87

2022-03-13

一、创建一个HelloWorld

1、创建一个测试模块

11.png
12.png
13.png
2、在build.gradle文件中引入依赖,如下:

查询仓库
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.22
如下为引入的依赖:
 //引入spring的核心容器
 compile(project(":spring-context"))
 compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
plugins {
    id 'java'
}

group 'org.springframework'
version '5.3.5-SNAPSHOT'

repositories {
    mavenCentral()
}
dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
    //引入spring的核心容器
    compile(project(":spring-context"))
    // https://mvnrepository.com/artifact/org.projectlombok/lombok
    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
}
test {
    useJUnitPlatform()
}

15.png

3、创建一个测试类

package com.lori.spring;

import com.lori.spring.bean.Person;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainTest {
    public static void main(String[] args) {
        //从xml创建一个ioc容器
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        Person bean = applicationContext.getBean(Person.class);
        System.out.println(bean);
    }
}

4、创建一个实体类

package com.lori.spring.bean;

public class Person {
    public String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}

5、创建一个xml配置文件

14.png

<?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">
        <!--注册一个组件-->
        <bean class="com.lori.spring.bean.Person" id="person">
            <property name="name" value="yiyangqianxi"/>
        </bean>
</beans>

6、控制台打印

16.png

二、Spring的核心注解

注解 功能
@Bean 容器中注册组件
- -
@Primary 同类组件如果有多个,标注主组件
- -
@DependsOn 组件之间声明依赖关系
- -
@Lazy 组件懒加载(最后使用的时候才创建)
- -
@Scope 声明组建的作用范围
- -
@Configuration 声明这是一个配置类
- -
@Component @Controller,@Service,@Repository
- -
@Indexed 加速注解,所有标注了@Indexed的组件,直接会启动快速加载
- -
@Order 数字越小,优先级越高,越先工作
- -
@ComponentScan 包扫描
- -
@Conditional 条件注入
- -
@Import 导入第三方jar包中的组件或定制批量导入组件逻辑

精彩评论(0)

0 0 举报