1

假设我有一个自定义启动器:

compile ('com.github.hippoom:sms-verification-starter:0.7.0')

将其导入项目后,您将拥有短信验证功能。它将按照惯例提供一些 bean。入门项目中的以下代码片段按约定(使用@Conditionaland @Bean)提供了一个 SmsVerificationCodeSender 实例。

// the starter project includes the following

public interface SmsVerificationCodeSender {
}

@Configuration
public class ApplicationConfiguration {

    @Bean
    @ConditionalOnMissingBean(SmsVerificationCodeSender.class)
    public SmsVerificationCodeSender smsVerificationCodeSenderStub() {
        // setup and return smsVerificationCodeSenderStub instance
    }

}

我的问题是如何按惯例提供 http 端点?

目前,我通过使用@ComponentScan

// the starter project includes the following as well
//TODO figure out is @ComponentScan is a good practice or not?
@ComponentScan(basePackages = {
        "com.thebund1st.daming.web",
})
@Import({
        OtherConfiguration.class
})
@Configuration
public class MyAutoConfiguration {


}

package com.thebund1st.daming.web

@RequiredArgsConstructor
@RestController
//TODO make the url path configurable
public class SmsVerificationRestController {

    @PostMapping("/api/sms/verification/code")
    @ResponseStatus(ACCEPTED)
    public void handle(@RequestBody SendSmsVerificationCodeCommand command) {
    //omitted codes
    }

}

我想知道这是在启动项目中执行此操作的正确方法吗?

1)写一个 @RestController 。
2)设置一个 @ComponentScan 。

我有这个担心只是因为我没有用 注释其他 bean @Service/@Repository,而是通过使用@Bean和以编程方式提供 bean 实例@Conditional

此外,如果您想自定义给定的路径,这会很困难@RequestMapping

这是我想要实现的目标:

1) starter 如何按照约定提供 http 端点?
2) 如果用户定义了他/她自己的端点,它应该跳过默认的 http 端点
3) 它应该为用户提供一些配置选项,比如更改 URI 等

如果需要更多详细信息,您可以查看此repo 。

4

0 回答 0