BossConfiguration.java 1.39 KB
package com.diligrp.cashier.boss;

import com.diligrp.cashier.shared.mybatis.MybatisMapperSupport;
import com.diligrp.cashier.shared.service.LifeCycle;
import jakarta.annotation.Resource;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import java.util.List;

@Configuration
@ComponentScan("com.diligrp.cashier.boss")
@MapperScan(basePackages =  {"com.diligrp.cashier.boss.dao"}, markerInterface = MybatisMapperSupport.class)
public class BossConfiguration implements ApplicationRunner {

    @Resource
    private ObjectProvider<LifeCycle> lifeCycleProvider;

    @Bean
    @ConfigurationProperties("merchant")
    public CashierDeskProperties cashierDeskProperties() {
        return new CashierDeskProperties();
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        List<LifeCycle> lifeCycles = lifeCycleProvider.stream().toList();
        for (LifeCycle lifeCycle : lifeCycles) {
            lifeCycle.start();
        }
    }
}