• InitializingBean的项目开发使用


    在开发过程中经常会遇到业务逻辑比较复杂,有时根据不同的情况处理不同的业务。这里可以使用 InitializingBean 在项目初始化的时候,对一些数据进行缓存。

    InitializingBean 的使用场景:InitializingBean 项目中需要在项目初始化的时候,对一些常用数据进行缓存  使用spring中的InitializingBean接口,监听spring的启动过程,在spring装载完所有的bean的时候,会自动调用实现InitializingBean的afterPropertiesSet()方法。

    项目使用逻辑:

    package com.example.dl.demo1;
    
    import org.springframework.beans.factory.InitializingBean;
    
    import java.util.List;
    
    /**
     * @author D-L
     * @program:
     * @description:   InitializingBean  项目中需要在项目初始化的时候,对一些常用数据进行缓存
     *                 使用spring中的InitializingBean接口,监听spring的启动过程,在spring装载完所有的bean的时候,会自动调用实现InitializingBean的afterPropertiesSet()方法
     * @date 2021-01-11 10:56:35
     */
    
    public interface DlMoudleService extends InitializingBean {
    
        /**获取类型*/
        String getMoudleType();
    
        /**处理具体业务逻辑*/
        void doMoudleData(String code, List<String> dataList);
    
    }

    具体的实现类:

    package com.example.dl.demo1;
    
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    /**
     * @author D-L
     * @program:
     * @description:  使用spring中的InitializingBean接口,监听spring的启动过程,在spring装载完所有的bean的时候,会自动调用实现InitializingBean的afterPropertiesSet()方法
     * @date 2021-01-11 11:00:10
     */
    @Service
    public class AdMoudleServiceImpl implements DlMoudleService {
        @Override
        public String getMoudleType() {
            /**给出具体的类型*/
            return "MOUDLE01";
        }
    
        @Override
        public void doMoudleData(String code, List<String> dataList) {
            System.out.println("this is moudle01----------------------");
        }
    
        /**
         * 将当前实例化bean放入缓存中
         * @throws Exception
         */
        @Override
        public void afterPropertiesSet() throws Exception {
            /**获取类型 调用者个根据 不同的类型执行不同的实现逻辑*/
            String moudleType = getMoudleType();
            DlMoudleContainer.getInstance().add( moudleType,this);
        }
    }

    封装bean缓存以及获取方法 提供单例模型:

    package com.example.dl.demo1;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @author D-L
     * @program:
     * @description: 封装bean缓存以及获取方法 提供单例模型
     * @date 2021-01-11 11:03:52
     */
    
    public class DlMoudleContainer {
    
        /**存放缓存实例化bean*/
        private Map<String ,DlMoudleService> moudles = new HashMap<>();
    
        /**
         * 使用静态内部类构造单例
         */
        public static class DlMoudleSingle{
            private static DlMoudleContainer instance = new DlMoudleContainer();
        }
    
        /**获取单例对象*/
        public static DlMoudleContainer getInstance() {
            return DlMoudleSingle.instance;
        }
    
        /**添加实例化bean*/
        public void add(String type , DlMoudleService command){
            moudles.put(type , command);
        }
    
        /**通过类型获取bean*/
        public DlMoudleService get (String type){
            return moudles.get(type);
        }
    
    }

    具体的调用:

    package com.example.dl.demo1;
    
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author D-L
     * @program:
     * @description:
     * @date 2021-01-11 11:23:55
     */
    @RestController
    @RequestMapping("test")
    public class DoMoudleDataController {
    
        @GetMapping("doMoudle")
        public String doMoudle(){
            DlMoudleService service = DlMoudleContainer.getInstance().get("MOUDLE01");
            List<String> list = new ArrayList<>();
            if(null != service){
                service.doMoudleData("M00001", list);
            }else {
                System.out.println("service is null-------------------");
            }
            return "success------------------";
        }
    }
  • 相关阅读:
    「SDOI2014」向量集 解题报告
    HNOI 2014 世界树
    LOJ #2205. 「HNOI2014」画框 解题报告
    KM模板
    洛谷 [HNOI2014]道路堵塞 解题报告
    [AHOI2014/JSOI2014] 解题报告
    AndroidStudio中添加依赖的三种方式以及如何引入so文件和arr文件
    android 四大组件详解
    Android—— ListView 的简单用法及定制ListView界面
    Android Studio 使用VCS版本控制
  • 原文地址:https://www.cnblogs.com/dongl961230/p/14270988.html
Copyright © 2020-2023  润新知