spring框架上手| 青训营笔记

128 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天

前言

首先提一个概念:Java Bean

Java Bean是使用Java语言编写的可重用的组件。说白了其实就是我们编写的类,它是Java面向对象的基础。

平时编写Java程序时,我们需要手动管理这些Bean,决定什么时候new一个Bean,并且要把它分配给谁。

这么一看倒是稀疏平常的一件事,但是当程序规模变得庞大起来的时候,这些Java Bean就会到处都是,而且如果后续要更换某些Bean(例如项目的升级迭代),依然需要去用最原始的方法去new一个对象,然后再分配给某个特定的地方。可想而知,这是一个很麻烦的事情,spring就解决了这个痛点。

spring概括

spring是一个开放源代码的设计层面框架,它有两大特点:控制反转(IOC)和面向切面(AOP)。

什么是控制反转(IOC)

原先,我们需要手动创建Bean并且分配,有了spring之后,我们就可以把Bean的创建和分配都交给spring容器去管理了,这就是“控制反转”。

基本使用

  • 导入使用spring所需要的依赖

我使用的构建工具是gradle,在build.gradle中导入如下配置:

dependencies {
    // spring
    implementation 'org.springframework:spring-context:6.0.3'
}

如果使用的是maven,步骤也是一样的,只不过内容不同~

  • 创建一个空的类,并带上注解
@Configuration
@ComponentScan("sys")
public class Config {
}

使用spring之前需要进行配置,也就是写特定的xml文件,而使用@Configuration可以代替这一步;@ComponentScan("sys")的作用是进行扫描,扫描sys包下的所有类,找到需要spring进行管理的Bean

  • 让spring托管Bean

spring就是管理各种各样的Bean的,我们还需要让spring知道哪些Bean需要让它去管理。

@Bean
public HikariDataSource dataSource() {
    HikariDataSource ds = new HikariDataSource(config());
    return ds;
}

@Bean注解用在方法上,这会产生一个与方法名同名的Bean

@Component
public class Database {
    // ......
}

@Component注解则用在类上。

  • 加载spring配置
public class Demo {
    public static void main(String[] args) {

        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
    }
}

在程序执行的入口,我们需要指定这一行代码,它的作用是加载spring配置,这个配置写在了类Config中,也就是我们刚才写@Configuration的那一个空类。

  • 使用getBean()方法观察结果

具体使用方法不作说明。

public class Demo {
    public static void main(String[] args) {

        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);

        HikariDataSource bean = ctx.getBean("dataSource", HikariDataSource.class);
        System.out.println(bean);
    }
}

输出结果如下:

image.png

配置成功。

——————————————————————————

如有错误或疏漏,还望海涵。