public interface PayClient {
void pay(int money);
}
@Slf4j
public class LocalPayClient implements PayClient {
@Override
public void pay(int money) {
log.info("로컬 결제 money={}", money);
}
}
@Slf4j
public class ProdPayClient implements PayClient {
@Override
public void pay(int money) {
log.info("운영 결제 money={}", money);
}
}
@Service
@RequiredArgsConstructor
public class OrderService {
private final PayClient payClient;
public void order(int money) {
payClient.pay(money);
}
}
@Component
@RequiredArgsConstructor
public class OrderRunner implements ApplicationRunner {
private final OrderService orderService;
@Override
public void run(ApplicationArguments args) throws Exception {
orderService.order(1000);
}
}
- ApplicationRunner로 테스트 해볼 수 있다.
@Slf4j
@Configuration
public class PayConfig {
@Bean
@Profile("default")
public LocalPayClient localPayClient() {
log.info("LocalPayClient 빈 등록");
return new LocalPayClient();
}
@Bean
@Profile("prod")
public ProdPayClient prodPayClient() {
log.info("ProdPayClient 빈 등록");
return new ProdPayClient();
}
}
- @Profile을 적용하여 원하는 빈을 등록할 수 있다.
'개발이 좋아서 > Spring이 좋아서' 카테고리의 다른 글
로그인 처리하기 - 쿠키, 세션 (0) | 2025.01.07 |
---|---|
Spring boot - 액츄에이터 (0) | 2025.01.07 |
Spring boot - 외부설정(yml) (0) | 2025.01.06 |
Spring boot - 외부 설정(Environment, @Value, @ConfigurationProperties) (1) | 2025.01.03 |
Springboot - 자동 구성(Auto Configuration), @Conditional (0) | 2025.01.03 |