• springboot中使用原型模式


    springboot中的bean默认是单例模式,一个类只有一个对象。

    但有时候我们希望每个类有多个对象。那么处理自己new Object之外,springboot是否支持这种操作呢?

    答案是肯定的。

    首先我们定义一个Animal接口,和他的两个实现类

    狮子只有一个,老虎有两个,所有我们给老虎Bean指定了原型模式。

    public interface Animal {
        String getName();
    }
    
    //狮子只有一个
    public class AnimalLion implements Animal {
        private String name;
    
        public AnimalLion(String name) {
            this.name = name;
        }
    
        @Override
        public String getName() {
            return name;
        }
    }
    
    //老虎会有两个
    public class AnimalTiger implements Animal {
        private String name;
    
        public AnimalTiger(String name) {
            this.name = name;
        }
    
        @Override
        public String getName() {
            return name;
        }
    }
    
    @Configuration
    public class AnimalFactory {
        @Bean(name = {"tigerA", "tigerB"})
        @Scope(value = "prototype")
        Animal getTiger(String name) {
            return new AnimalTiger(name);
        }
    
        @Bean
        Animal getLion() {
            String name = "lionA";
            return new AnimalLion(name);
        }
    
    }

    测试一下:

    @SpringBootTest(classes= MetaCenterApplication.class)
    class AnimalFactoryTest {
    
        @Autowired
        private AnimalFactory animalFactory;
    
        @Test
        void get() {
            Animal tigerA = animalFactory.getTiger("tigerA");
            Animal tigerB = animalFactory.getTiger("tigerB");
            Animal lionA = animalFactory.getLion();
            Animal lionB = animalFactory.getLion();
            System.out.println(tigerA.getName());
            System.out.println(tigerB.getName());
            System.out.println(lionA.getName());
    
            System.out.println(tigerA==tigerB);
            System.out.println(lionA==lionB);
        }
    }

    输出:

    我们发现老虎果然生成了两个实例,而狮子只有一个。

    tigerA
    tigerB
    lionA
    false
    true
  • 相关阅读:
    基于协同过滤的个性化Web推荐
    自动推荐系统效果为什么不好
    基于模糊聚类和协同过滤的混合推荐系统
    海量数据处理之蓄水池抽样算法
    心灵启发--不羡慕别人的生活
    ubuntu安装软件整理
    Hadoop系列
    网页返回错误编号含义整理
    找出单链表的中间位置指针
    【python爬虫】根据查询词爬取网站返回结果
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/16469193.html
Copyright © 2020-2023  润新知