当前位置: 首页 > 知识库问答 >
问题:

@服务和@范围(“原型”)一起

汪胡非
2023-03-14

我有一个带有@service和@Scope(“原型”)的服务类。我希望此服务的行为类似于控制器类中的原型。以下是我如何使用它:

@Controller
@RequestMapping(value="/")
public class LoginController {
  @Autowired
  private EmailService emailService;

  @RequestMapping(value = "/register", method = RequestMethod.POST)
  public String register(){
    System.out.println(emailService);
    emailService.sendConfirmationKey();
  }
  @RequestMapping(value = "/resetKey", method = RequestMethod.POST)
    System.out.println(emailService);
    emailService.sendResetKey();
}

以下是服务类别:

@Service
@Scope("prototype")
public class EmailService {
    @Autowired
    private JavaMailSender mailSender;

    public void sendConfirmationKey(){
    ...
    }
    public void sendResetKey(){
    ...
    }
}

我使用自动配置属性运行spring boot。我比较“emailService”对象是否相同,得到的是相同的一个对象。这意味着@Scope(“prototype”)不能像预期的那样与@Service一起工作。你看到这里有什么问题吗?我忘了添加一些代码了吗?

编辑:回复@Janar,我不想使用其他代码使其工作,例如WebApplicationContext属性和额外的创建方法。我知道有一种只使用注释的较短方法。

共有1个答案

凤昊东
2023-03-14

必须在范围注释中指定代理模式。

这应该可以做到:

@Service 
@Scope(value="prototype", proxyMode=ScopedProxyMode.TARGET_CLASS)  
public class EmailService {}

或者,您也可以将LoginController定义为原型

 类似资料:
  • 问题内容: 我有一个名为Bar的类,带有以下注释: 在私人成员上,我具有以下注释: 在春季配置中,我有一个Foo类的bean。如果用它定义的bean 不起作用,则出现以下异常: NoSuchBeanDefinitionException:找不到依赖项为Foo的匹配bean:期望至少有1个有资格作为此依赖项的自动装配候选的bean 一旦我将注入的bean作用域更改为正常工作。 是否自动布线原型作用域

  • 问题内容: 假设两个类为ClassA和ClassB。假设ClassB依赖于ClassA。在配置文件中,如果将ClassA的范围定义为单例,将ClassB的范围定义为Prototype,那么每次创建ClassA的bean实例时,ClassB的实例会发生什么?每次返回ClassA实例时,将返回相同的ClassB实例还是创建新实例? 谢谢!!! 问题答案: 如果ClassB是原型,则始终创建ClassB

  • 嗯,很可能没有任何谜团,但我只是不够聪明,不知道我的问题是什么。然而,通常它毕竟是谜团! 很抱歉进行介绍,我的问题是原型范围似乎不适合我。我创建了一个带有Spring集成流的REST服务(流前面有一个http入站网关)。大多数bean的作用域都是原型。我通过使用线程调用它十次来测试流。此外,我还记录了bean引用(只需在被调用的对象中打印“this”),并且我看到了十次相同的引用! 据我所知,这意

  • 主要内容:服务器标识,文件位置,限制资源使用本文将介绍核心服务器提供的一些指令,这些指令用于配置服务器的基本操作。 服务器标识 和指令控制有关服务器的信息将显示在服务器生成的文档中,例如错误消息。指令设置Server HTTP响应头字段的值。 服务器使用,和指令来确定如何构造自引用URL。例如,当客户端请求目录但在目录名称中不包含尾部斜杠时,httpd必须将客户端重定向到包括尾部斜杠的全名,以便客户端正确解析文档中的相对引用。 文件位置 这

  • 本文向大家介绍单例和原型bean范围之间的区别。,包括了单例和原型bean范围之间的区别。的使用技巧和注意事项,需要的朋友参考一下 Spring框架支持五种类型的bean作用域- 辛格尔顿 原型 请求 届会 全球会议 根据春季文件- Singleton-每个Spring IoC容器返回一个bean实例。该单个实例存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高