0
点赞
收藏
分享

微信扫一扫

Spring源码解析(以及HelloWord)

七公子706 2022-03-13 阅读 85

一、创建一个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 条评论