Spring управляемые против неуправляемых компонентов - PullRequest
0 голосов
/ 04 июля 2018

У меня есть простой объект-держатель данных Result, который возвращается из метода.

Я запутался в том, как правильно использовать или создавать этот объект с помощью Spring boot.

  1. Должен ли этот класс быть помечен аннотацией @Component?
  2. Могу ли я просто создать этот объект с помощью 'new Result ()' или я должен автоматически подключиться и использовать его?
  3. Если я использую 'new Result ()', Spring не будет управлять этим экземпляром. Это понимание правильно? Каковы преимущества или недостатки управляемых по сравнению с неуправляемыми компонентами.

Спасибо, Судха

1 Ответ

0 голосов
/ 04 июля 2018

Если я использую 'new Result ()', Spring не будет управлять этим экземпляром. Это понимание правильно? В чем преимущества или недостатки управляемых и неуправляемых компонентов.

Ну, самая большая разница - Инверсия контроля IoC (он же Инъекция зависимости DI). Если Result управляется Spring, вы можете автоматически связывать другие bean-компоненты Spring (например, службы, компоненты, репозитории и т. Д.). Кроме того, вы можете автоматически связывать bean-компонент Result с другими bean-компонентами Spring. Более подробную информацию можно найти здесь

Могу ли я просто создать этот объект с помощью 'new Result ()' или я должен автоматически подключиться и использовать его?

Ну, это зависит от вашего сценария. Например, если у вас есть ответ JSON в контроллере Spring, в этом случае лучше использовать классический POJO и создать его, потому что это зависит от вашей бизнес-логики. С другой стороны, ваш бин - это своего рода сервис, который можно использовать в других точках вашего проекта, потому что он предлагает некоторые методы, и в этом случае я думаю, что это хорошо - автоматически связать его и сделать его как пружинный бин

Должен ли этот класс быть помечен аннотацией @Component?

Ну, как я сказал ранее, это зависит от вашего сценария. В случае, который вы описали (результат метода), возможно, лучше использовать классический POJO. Но вы не предоставили достаточно информации

...