zoukankan      html  css  js  c++  java
  • 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------------------";
        }
    }
  • 相关阅读:
    unicode编码表
    范仁义js课程---17、赋值运算符
    如何从Apache官网下载windows版apache服务器
    php开发工具zendstudio13破解补丁
    如何彻底删除SVN中的文件和文件夹(附恢复方法)
    proguard.cfg 配置文件
    VMware-workstation-full-12.0.1-3160714
    《吉他自学三月通》学习指导
    [Windows] Adobe Photoshop CC 2015官方原版下载 附破解补丁&破解教程
    【求神——唐伯虎点秋香】
  • 原文地址:https://www.cnblogs.com/dongl961230/p/14270988.html
Copyright © 2011-2022 走看看