美文网首页springboot
springboot-自动装配-@ComponentScan-0

springboot-自动装配-@ComponentScan-0

作者: 愤怒的奶牛 | 来源:发表于2020-07-25 23:03 被阅读0次

springboot 自动装配机制是springboot 的核心机制之一,也是非常重要的机制。什么是自动装配?概率很玄乎。我们先来看一下一个常见案例:@EnableXXX

@EnableCaching //开启缓存
@SpringBootApplication
public class EnableDemoApplication {

    public static void main(String[] args) {
      
    }

}

注意 @EnableXXX 注解只是springboot 自动装配机制中的一部分,@EnableXXX 官方并没有给具体含义,只是配合使用完成自动装配,可以将 @EnableXXX 称为,@Enable 驱动或者@Enable模块,简单点就是@Enable 注解。

  • 自动装配:

本质就是将Bean 交给spring 容器托管。严格意义是上是加载外部的Bean。

  • 注解驱动开发@ComponentScan

最原始或者说最开始被使用的一种spring 扫描Bean 的方式,配合使用的注解有 @Component,以及 @Component 衍生的注解 @Configuration,@Service等等。

说明:@SpringBootApplication 扫描的根路径是启动类所在的路径。

//测试 @ComponentScan  --> com.example.enabledemo
package com.example.enabledemo.helloworld;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HelloWorldConfig {

    @Bean
    public HelloWorld helloWorld () {
        return new HelloWorld();
    }

}

=======================
package com.example.enabledemo.helloworld;

public class HelloWorld {

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

=======================
package com.example.enabledemo;

import com.example.enabledemo.helloworld.HelloWorld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.ConfigurableApplicationContext;

//@EnableCaching
@SpringBootApplication
public class EnableDemoApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(EnableDemoApplication.class, args);
        HelloWorld helloWorld = context.getBean(HelloWorld.class);
        helloWorld.hello();
    }

}

运行结果 输出 hello world
说明我们使用项目内加载Bean 是成功的,当然是成功的,有一点spring 基础的人都知道。。那么问题来了,假设有个外部的 基于spring开发的模块需要添加到本项目中,那怎么让当前容器加载所有的Bean呢?最简单的解决方案肯定能想到:使用 @ComponentScan 配置扫描路径。这肯定是没有问题的,但是springboot 帮我们提供了跟更优雅的方式:自定装配或者自动注入。接下来我们就来看看springboot的解决思路。

相关文章

网友评论

    本文标题:springboot-自动装配-@ComponentScan-0

    本文链接:https://www.haomeiwen.com/subject/ibzplktx.html