springboot正常启动,URL访问不了后台,MARK一下注解扫描

练习项目的注解和代码检查了都没有问题,原因是启动类和配置类不在同一个目录中,以下是项目目录:

在这里插入图片描述
查看发现启动类注解添加扫描,就顺利进入:@SpringBootApplication(scanBasePackages = “com”)

接下来详细了解下该:
@SpringBootApplication注解,默认该注解定义了Spring将自动扫描包package com.jia.staffmanagesys及其子包下的bean。

在这里插入图片描述
@ComponentScan、@SpringBootApplication中的scanBasePackages属性

一、@ComponentScan
创建一个配置类,在配置类JavaConfig形式上添加 @ComponentScan 注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>
@ComponentScan 的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中,注解定义如下:


@Retention(RetentionPolicy.RUNTIME)
//表示只可以声明在类上
@Target({ElementType.TYPE})
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {
    @AliasFor("basePackages")
    String[] value() default {};

    @AliasFor("value") //表示和value等价
    String[] basePackages() default {};

    Class<?>[] basePackageClasses() default {};

@Target({ElementType.TYPE}) 表示只可以声明在类上

value 表示用法如 @ComponentScan(value="")  也可以简写为 @ComponentScan("") ,省略value=

basePackages,表示用法如@ComponentScan(basePackages=""),由于和value等价(@AliasFor("value")),
也可简写为@ComponentScan("")

二、SpringBootApplicatioscan中的scanBasePackages属性
本质上,SpringBootApplicatioscan中的scanBasePackages属性底层原理正是复用了
@ComponentScan,因此语法和意义基本一致

public @interface SpringBootApplication {
   //复用了@ComponentScan
    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

@AliasFor标签表示别名的意义,可以理解为等价于。因此,下面2种用法相同:

@SpringBootApplication (scanBasePackages="com.jia")
public class MyClass {}
package com.jia;
@ComponentScan("com.jia")
@SpringBootApplication
public class MyClass {
}

通过上面的注解spring在启动的时候会按照相关的路径进行对@Component元素的加载。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值