在Spring配置类中,方法是否添加@Bean注解

在Spring配置类中,方法是否添加@Bean注解

@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    @Autowired
    private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
    @Autowired
    private JwtTokenUserInterceptor jwtTokenUserInterceptor;

    /**
     * 注册自定义拦截器
     * @param registry
     */
    protected void addInterceptors(InterceptorRegistry registry) {
        log.info("开始注册自定义拦截器...");
        registry.addInterceptor(jwtTokenAdminInterceptor)
                .addPathPatterns("/admin/**")
                .excludePathPatterns("/admin/employee/login");

        registry.addInterceptor(jwtTokenUserInterceptor)
                .addPathPatterns("/user/**")
                .excludePathPatterns("/user/user/login")
                .excludePathPatterns("/user/shop/status");
    }

    @Bean
    public Docket docket1(){
        log.info("准备生成接口文档...");
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();

        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .groupName("管理端接口")
                .apiInfo(apiInfo)
                .select()
                //指定生成接口需要扫描的包
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin"))
                .paths(PathSelectors.any())
                .build();

        return docket;
    }

在Spring配置类中,方法是否添加@Bean注解主要取决于以下两个关键因素:

1,需要注册为Bean的方法(需加@Bean)

@Bean // 当需要将方法返回值注入Spring容器时添加
public Docket docket1(){
    return new Docket(...); // 这个Docket对象需要被Spring管理
}

比如代码中的docket1()方法是第三方方法,它的返回值对象是需要被Spring管理的Swagger配置Bean,因此需要添加@Bean。

2,覆盖父类配置的方法(不加@Bean)

@Override
protected void addInterceptors(InterceptorRegistry registry) { // 来自WebMvcConfigurationSupport的模板方法
    registry.addInterceptor(jwtTokenAdminInterceptor)... // 直接配置拦截器
}

像addInterceptors()、addResourceHandlers()、extendMessageConverters()这些方法:
是覆盖自WebMvcConfigurationSupport的模板方法
由Spring框架自动调用(非手动注入)
返回类型为void或不需要注册Bean
主要用于配置行为而非声明Bean
通过这种设计,既保留了Spring Boot的自动配置能力,又能通过@Bean显式声明需要容器管理的组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值