Как лучше всего настраивать пользовательский стартер для предоставления конечных точек http - PullRequest
1 голос
/ 24 марта 2019

Допустим, у меня есть пользовательский стартер:

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

У вас будет функция проверки смс, как только вы импортируете ее в свой проект.Это обеспечит некоторые бобы по соглашению.Следующий фрагмент кода в начальном проекте предоставляет экземпляр SmsVerificationCodeSender по соглашению (с использованием @Conditional и @Bean).

// 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) Как стартер предоставляет конечные точки http по соглашению?
2) Следует пропустить конечные точки http по умолчанию, если пользователь определяет свои собственные конечные точки
3) Он должен предоставить некоторые параметры конфигурации для пользователя, такие как изменение URI и т. Д.

Вы можете посмотреть на это репо если требуется больше деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...