假设我有一个自定义启动器:
compile ('com.github.hippoom:sms-verification-starter:0.7.0')
将其导入项目后,您将拥有短信验证功能。它将按照惯例提供一些 bean。入门项目中的以下代码片段按约定(使用@Conditional
and @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 。