pangyosim / pizzapr0ject

은행 대기인원 프로젝트 초안
MIT License
1 stars 0 forks source link

@Autowired에 대해서 #8

Open somefood opened 7 months ago

somefood commented 7 months ago

https://github.com/pangyosim/pizzapr0ject/blob/180e1c89be28a786a709807337cd0c09cffcec9d/src/main/java/com/web/controller/BoardController.java#L24-L25

안녕하세요 판교님, 저번 이슈에 대해 해결해보시고 고생 많으셨습니다. 다음으로 문의 드리고 싶은 이슈는 Autowired 어노테이션에 대해서인데요.

스프링에선 빈을 주입 받는 방법이 여러가지가 있을것입니다. 그 중 하나가 위 어노테이션일테고~? 이번 이슈에서 제가 문의드리는 점은 빈 주입 방법이 어떤것들이 있을지 알려주셨으면 하며, 어떤 방법이 좋을지도 의견을 달아주셨으면 좋겠습니다.

그럼 화이팅입니다~! ㅎㅎ😄

pangyosim commented 7 months ago

안녕하세요 석주님, 다시한번 프로젝트에 관심가져주셔서 감사합니다.

스프링에선 빈 주입 방법은 총 네가지로 알고 있습니다. 1) 생성자 주입 2) setter 주입 3) 필드 주입 4) 메서드 주입

먼저,

  1. 방법은 인자로 빈객체를 주입받는 방법입니다. 이 방법은 생성자 호출 시점에서 1번만 호출되고, 불변하거나 필수적인 의존관계를 주입할 때 사용하는걸로 알고 있습니다.
  2. 방법은 선택적으로 변경 가능한 의존관계 주입 시 사용됩니다.
  3. 방법은 의존 관계에 바로 주입하는 방법입니다. 코드가 간결해져 유지보수에 용이하지만, Unit 테스트가 불가능하고 순수 JAVA 코드에서는 동작하지 않기 때문에 확장성이 보다 좋지않은 단점을 가지고 있습니다.
  4. init 메서드명을 사용하여, 한번에 여러 필드를 주입받을 수 있습니다.

현재 프로젝트에서는 협업 시 팀원들과 회의하여 3. 방법으로 진행하였으나, 스프링과 같은 DI 프레임워크에서는 대부분 의존관계를 한 번 초기화되면 애플리케이션 종료 시점까지 의존관계를 변경할 일이 적어 1. 생성자 주입 방법을 권장한다고 알고있습니다.

해당 프로젝트에서도 변경되지 않는 필드값들을 가진 빈 객체에 한에서 생성자 주입방법이 용이하다고 판단되어 수정해보도록합니다...! 좋은 의견 덕에 더 안정적인 코드를 만들어 주신 기회에 감사합니다 ㅎㅎ 🙂

somefood commented 7 months ago

안녕하세요 판교님, 찾아보시느라 고생많으셨습니다.

3번 같은 경우가 개발하기에 있어서 편리한 방식이지만, 말씀주신대로 향후 테스트 코드까지 고려한다면 생성자 주입으로 바꾸는 게 좋을 듯 합니다 ㅎㅎ

수정된 코드도 해당 이슈랑 연결지어 알려주시면 같이 봐보도록 하겠습니다~!

pangyosim commented 6 months ago

안녕하세요. 석주님 프로젝트 UI 수정 및 백엔드 로직 수정하여 올려놔서 시간이 좀 걸렸네요 🥲 해당 질문 관련해서 수정하여 다른 레포지토리에 올려놨습니다 ㅎㅎ

https://github.com/pangyosim/dwbb-bankend

감사합니다.