当前位置:   article > 正文

原型模式(springboot 注解@Scope使用说明)_@scope prototype带参构造器

@scope prototype带参构造器

springboot 注解@Scope

 

springboot 使用工厂+反射创建bean示例,创建的bean实例默认为单例,可通过注解@Scope("prototype")使得每次调用对象的时候生成一个新的对象

 

*********************************************

示例

 

********************************

pojo 层

 

  1. @Component
  2. @Scope("singleton")
  3. public class Person {
  4. private String name;
  5. private Integer age;
  6. public String getName() {
  7. return name;
  8. }
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public Integer getAge() {
  13. return age;
  14. }
  15. public void setAge(Integer age) {
  16. this.age = age;
  17. }
  18. @Override
  19. public String toString() {
  20. return this.name+" "+this.age+" "+super.toString();
  21. }
  22. }

 

**************************************

controller 层

 

  1. @RestController
  2. public class HelloController {
  3. @Resource
  4. private Person person;
  5. @Resource
  6. private Person person2;
  7. @RequestMapping("/hello")
  8. public String hello(){
  9. person.setName("瓜田李下");
  10. person.setAge(24);
  11. System.out.println(person);
  12. return person.toString();
  13. }
  14. @RequestMapping("/hello2")
  15. public String hello2(){
  16. System.out.println(person2);
  17. return person2.toString();
  18. }
  19. }

 

********************************

调用/hello 、/hello2后,控制台输出

 

@Scope("singleton"):scope的默认值

  1. 瓜田李下 24 com.example.demo.pojo.Person@79ea6d7a
  2. 瓜田李下 24 com.example.demo.pojo.Person@79ea6d7a

 

@Scope("prototype")

  1. 瓜田李下 24 com.example.demo.pojo.Person@58b44e01
  2. null null com.example.demo.pojo.Person@2e3371d3

说明:springboot的prototype创建的对象不会复制bean的数据内容,属性都为默认值

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/68496
推荐阅读
相关标签
  

闽ICP备14008679号