首页 > 其他分享 >深入理解spring注解之@ComponentScan注解

深入理解spring注解之@ComponentScan注解

时间:2024-02-01 13:55:24浏览次数:40  
标签:Service zhang spring ComponentScan 注解 com

今天主要从以下几个方面来介绍一下@ComponentScan注解:

  • @ComponentScan注解是什么

  • @ComponentScan注解的详细使用

 

1,@ComponentScan注解是什么

 

其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中

 

 

2,@ComponentScan注解的详细使用

 

做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component

没错

@ComponentScan注解默认就会   装配    标识了@Controller,@Service,@Repository,@Component注解的    类       到spring容器中,好下面咱们就先来简单演示一下这个例子

 

 

在包com.zhang.controller下新建一个UserController带@Controller注解如下:

 

 

 

 

 

 

 

package com.zhang.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
}

 

 

 

 

 

在包com.zhang.service下新建一个UserService带@Service注解如下:

 

 

 

 

 

package com.zhang.service;
import org.springframework.stereotype.Service;
@Service
public class UserService {
}

 

 

 

 

 

在包com.zhang.dao下新建一个UserDao带@Repository注解如下:

 

 

 

 

 

 

 

package com.zhang.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
}

 

 

 

 

 

新建一个配置类如下:

 

 

 

 

 

/**
 * 主配置类  包扫描com.zhang
 *
 * @author zhangqh
 * @date 2018年5月12日
 */
@ComponentScan(value="com.zhang")
@Configuration
public class MainScanConfig {
}

 

 

 

 

 

新建测试方法如下:

 

 

 

 

 

AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainScanConfig.class);
        String[] definitionNames = applicationContext2.getBeanDefinitionNames();
        for (String name : definitionNames) {
            System.out.println(name);
}

 

 

 

 

 

运行结果如下:

 

 

 

 

 

mainScanConfig
userController
userDao
userService

 

 

总结一下@ComponentScan的常用方式如下

 

  • 自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器

  • 通过includeFilters加入扫描路径下没有以上注解的类加入spring容器

  • 通过excludeFilters过滤出不用加入spring容器的类

  • 自定义增加了@Component注解的注解方式



 

标签:Service,zhang,spring,ComponentScan,注解,com
From: https://www.cnblogs.com/JavaYuYin/p/18001077

相关文章

  • springboot整合mybatisplus
    1、引入依赖<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency&g......
  • springAOP的理解和具体实现
    AOP:Aspect-OrientedProgramming面向切面编程。其实是对OOP(面向对象编程)的补充和完善简单点描述就是OOP有些事做起来很麻烦,很不方便,而利用AOP是可以很快很便捷的处理。OOP引入封装、继承、多态等概念去公共对象的处理。但对于公共行为的时候就不好弄。此时就衍生出AOP。比如对......
  • springboot整合mybatis(纯注解版)
    springboot整合mybatis1、注解:参考表@ResponseBody:表示该方法的返回结果直接写入HTTPresponsebody中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTPres......
  • META-INF.spring
    META-INF/spring 目录通常用于存放 Spring 框架相关的配置文件。这个目录位于 Java 或 Spring 应用的类路径(classpath)中,使得 Spring 框架能够在应用启动时自动加载这些配置文件。在 Spring 应用中,META-INF/spring 目录可能包含以下类型的文件:1. Spring 配置文件:这些......
  • 面试官:SpringCloudGateway过滤器类型有哪些?
    在SpringCloudGateway中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制。例如,它可以实现对传入的请求进行验证、修改、日志记录、身份验证、流量控制等各种功能。在SpringCloudGateway中,过滤器总共分为以下两大类:局部过滤器:只作用于某一个路由(route......
  • Spring自带的这11个工具类,真香!
    前言最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率。今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助。1Assert很多时候,我们需要在代码中做判断:如果不满足条件,则抛异常。有没有统一的封装呢?其实Spring给我们......
  • spring boot分页
    0verridepublicPair<List<ApplyDto>,Long>selectDbApplyList(ApplyDtoapplyDto){Longid=applyDto.getId();//办事顺信DbSupervisiondbSupervision=abSupervisionMapper.selectDbSupervisionByDbId(id);if(dbSupervision==null){thrownewRuntimeExcep......
  • springboot @configuration
    @controller@service@repository下面都是@component注解booleanproxyBeanMethods()defaulttrue;proxyBeanMethods 是 Spring Boot 中 @Configuration 注解的一个属性,用于控制是否应该为 @Configuration 类中通过 @Bean 方法定义的 bean 创建代理。这个属性的......
  • Spring Boot的自动装配原理及流程
    自动装配的流程(原理)                       参考链接:https://blog.csdn.net/weixin_45764765/article/details/1102505311、main方法中SpringApplication.run(HelloBoot.class,args)的执行流程中有refreshContext(context)。2、而这个refreshContext(cont......
  • 使用注解替换Spring配置文件&SpringMVC的配置文件
    创建初始化类,替换web.xml在Servlet3.0环境中,Web容器(Tomcat)会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来配置Servlet容器。Spring提供了这个接口的实现,名为SpringServletContainerInitializer,这个类反过来又会查找实现WebA......