当前位置:首页 > Java API 与类库手册 > 正文

Java优学网DI依赖注入入门解析:轻松掌握Spring框架核心技能

public class UserService {

private UserRepository userRepository = new UserRepository();

public void saveUser(User user) {
    userRepository.save(user);
}

}

public class OrderService {

private final PaymentProcessor paymentProcessor;
private final InventoryService inventoryService;

public OrderService(PaymentProcessor paymentProcessor, InventoryService inventoryService) {
    this.paymentProcessor = paymentProcessor;
    this.inventoryService = inventoryService;
}

public void processOrder(Order order) {
    if (inventoryService.checkStock(order)) {
        paymentProcessor.charge(order);
        inventoryService.updateStock(order);
    }
}

}

@Component public class ProductService {

private final ProductRepository productRepository;
private final CacheManager cacheManager;

@Autowired
public ProductService(ProductRepository productRepository, 
                     @Qualifier("redisCache") CacheManager cacheManager) {
    this.productRepository = productRepository;
    this.cacheManager = cacheManager;
}

}

Java优学网DI依赖注入入门解析:轻松掌握Spring框架核心技能

@Configuration public class AppConfig {

@Bean
@Primary
public DataSource mysqlDataSource() {
    return DataSourceBuilder.create()
        .url("jdbc:mysql://localhost:3306/youxue")
        .username("admin")
        .password("password")
        .build();
}

@Bean
@Qualifier("h2DataSource")
public DataSource h2DataSource() {
    return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("classpath:schema.sql")
        .build();
}

}

public interface PaymentProcessor {

Java优学网DI依赖注入入门解析:轻松掌握Spring框架核心技能

PaymentResult process(PaymentRequest request);
boolean supports(PaymentMethod method);

}

@Service public class AlipayProcessor implements PaymentProcessor {

private final AlipayClient alipayClient;

public AlipayProcessor(AlipayClient alipayClient) {
    this.alipayClient = alipayClient;
}

@Override
public PaymentResult process(PaymentRequest request) {
    // 支付宝支付逻辑
    return new PaymentResult(true, "支付成功");
}

@Override
public boolean supports(PaymentMethod method) {
    return method == PaymentMethod.ALIPAY;
}

}

@Service public class PaymentService {

private final List<PaymentProcessor> processors;

public PaymentService(List<PaymentProcessor> processors) {
    this.processors = processors;
}

public PaymentResult processPayment(PaymentRequest request) {
    return processors.stream()
        .filter(processor -> processor.supports(request.getMethod()))
        .findFirst()
        .orElseThrow(() -> new UnsupportedPaymentMethodException())
        .process(request);
}

}

你可能想看:

相关文章:

  • Java优学网@Autowired入门解析:掌握Spring依赖注入,轻松实现高效开发2025-10-17 20:07:43
  • 文章已关闭评论!