Конструктор Spring Boot @RequestScope не печатается в консолиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Конструктор Spring Boot @RequestScope не печатается в консоли

Сообщение Anonymous »

Я пытаюсь понять различные области применения компонентов. При работе с @RequestScope я не вижу сообщения, выведенного на консоль из конструктора и метода Destroy(), чтобы подтвердить, когда этот компонент действительно создается или уничтожается. Это работает для @Singleton и @Prototype Beans.
Также person1.counter++; похоже, не сбрасывается после каждого запроса, что означает, что Bean на самом деле не воссоздается заново для каждого запроса, как следует из названия.
Но если я добавлю увеличенияCounter() в Person.java и вызовите это из контроллера, затем счетчик сбрасывается, и сообщения метода конструктора и уничтожения() печатаются в консоли. Что здесь происходит. В руководствах по @RequestScope ничего из этого не упоминается.
int increaseCounter() {
counter++;
return counter;
}

Мне также удалось изменить код так, чтобы
"Лицо создано" и
"Человек уничтожен"
отображалось, но person1.counter++; никогда не сбрасывается, как будто компонент на самом деле не уничтожается.
Person.java
package com.ivoronline.springboot_accessories_beans_scope_request;

import jakarta.annotation.PreDestroy;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;

@Component
@RequestScope
public class Person {

//PROPERTIES
public String name;
public int counter;

//CONSTRUCTOR
Person() {
System.out.println("Person Created");
}

//DESTROY
@PreDestroy
public void destroy() {
System.out.println("Person Destroyed");
}

}

Controller.java
package com.ivoronline.springboot_accessories_beans_scope_request;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Controller {

//PROPERTIES
@Autowired Person person1; //New Instance/Bean
@Autowired Person person2; //New Instance/Bean

//=========================================================================================================
// SET PERSON NAME
//=========================================================================================================
@RequestMapping("setPersonName")
void setPerson() {
person1.name = "John";
person2.name = "Bill";
person1.counter++;
}

//=========================================================================================================
// GET PERSON NAME
//=========================================================================================================
@RequestMapping("getPersonName")
String getPerson() {
return person1.counter + ":" + person1.name + " - " + person2.name;
}

}


Подробнее здесь: https://stackoverflow.com/questions/788 ... in-console
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»