[Spring] 笔记总结:@ComponentScan

所属

spring-context.jar,外部依赖 spring-core.jar、spring-beans.jar、spring-aop.jar。

语法
  1. @ComponentScan({“com.xiao.hui”,“com.xiao.qiang”})
  2. @ComponentScan(basePackages = {“com.xiao.hui”,“com.xiao.qiang”})
  3. @ComponentScan(“com.xiao”)
  4. @ComponentScan(value = “com.xiao”)
  5. @ComponentScan(basePackages = { “com.xiao” })
  6. @ComponentScan(basePackageClasses=xxx.class)
参数
  1. basePackages:Spring将扫描的基础package名,Spring会扫描该包以及其子孙包下的所有类。
  2. useDefaultFilters:默认为 true,此时 Spring 扫描类时发现如果其被标注为 @Component、@Repository、@Service、@Controller、@Configuration 则自动实例化为 bean 并将其添加到上下文中,如果设置为 false,即使将其标注为 @Component 或者其他,Spring 都会忽略。
简介

@ComponentScan 是一个配置项,配置后让 Spring 扫描指定包下面被 @Controller、@Service、@Repository、@Component、@Configuration 注解的类,对其实例化并加入其内部容器中,然后通过 Spring 可以取出其实例。

例子

Spring 项目

@ComponentScan // 默认扫描该注解类所在包
@Configuration // 表示这是配置文件
public class BeanConfig {

}
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
// 默认通过类名第一个字母小写来获取实例化的对象
BeanConfig cnf = applicationContext.getBean("beanConfig");

SpringBoot 项目

// @SpringBootApplication 包含了 @Configuration、@ComponentScan
@SpringBootApplication
public class AppMain {
    public static void main(String[] args) {
        ApplicationContext applicationContext = SpringApplication.run(SpringbootCodeMain.class, args);
        BeanConfig cnf = applicationContext.getBean("appMain");
    }
}

SpringMVC 项目

// web.xml
<context-param>
    <!-- 不配置默认为applicationContext.xml -->
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/springConfig.xml</param-value>
</context-param>

// springConfig.xml
<beans>
    <context:component-scan base-package="com.gmtx">
        ......
    </context:component-scan>
</beans>
笔记

@Configuration、@Component、@Repository、@Service、@Controller 都是继承 java.lang.annotation.Annotation

更多

文章同步更新在《小专栏

学习

https://www.jianshu.com/p/64aac6461d5b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值