전체 글

myGoodPlace
[Spring] IoC를 실현하기 위한 DI(의존 관계 주입) 방법 3가지
의존 관계를 주입할 수 있는 방법은 3가지다.필드 주입setter 주입생성자 주입 생성자가 단 1개라면, @Autowired 하지 않아도 스프링 컨테이너가 가지고 있는 스프링빈으로 의존관계를 주입해준다.이렇다는 것은 스프링이 현재 생성자 주입을 통해 의존 관계를 설정해주는 것을 밀고 있다는 뜻이 아닐까?! 그렇다면, 왜 필드 주입 방법과 setter 주입 방법은 생성자 주입 방법에 밀린걸까!?  필드 주입 방법의 단점생성자, setter 메서드를 통해 덮어쓰기가 가능하다.테스트를 작성할 때, 스프링 컨테이너에게 의존하게 된다.순환 참조를 실행시에 알 수 있다. (스프링버전 2.5 이후부터는 필드 주입도 순환 참조를 알 수 있음) setter 주입 방법의 단점외부에서 의도치 않게 값이 변경될 수 있다.
[Spring] @Component 와 @Autowired를 통해 IoC실현하기
IoC(Inversion of Control) 란 객체 생성 및 호출과 같은 객체 관리 주체를 개발자에서 프레임워크인 스프링에게 넘겨줌으로써 역할이 바뀌는 것을 말한다. 이를 실현하려면, 스프링은 어떤 객체를 관리해야하는지 알고, 어느부분에 객체를 사용해야 하는지 알 필요가 있다. 그렇다면, 우리 개발자는 스프링에게 1. 어떤 객체를 관리해야하는지2. 어느 부분에 관리를 부탁한 객체를 사용해야 하는지알려줘야 한다. 어떤 객체를 관리해야하는지 알려주기 위해, @Component Anotation을 사용한다.어느 부분에 관리를 부탁한 객체를 사용해야하는지 알려주기 위해, @Autowired Anotation을 사용한다. 프로젝트를 실행시키면, 스프링은 모든 클래스를 보면서, 이렇게 작성한 Anotation을..
[Spring] 객체지향적인 개발을 하도록 도와주는 IoC와 DI
어디서 객체를 생성해서, 이 객체를 어느시점에 호출해줘야하는걸까? 이러한 객체의 생명주기를 고민하면서 구현을 했던 개발자들에게, 객체지향적으로 개발을 할 수 있도록 틀을 제공하여 비즈니스 로직에 더 신경쓰도록 도와주는 것이 Spring이라는 프레임워크다. 즉, 스프링은 객체 지향 언어인 자바가 객체 지향적인 언어로써 구현이 될 수 있도록 틀을 제공한다. 얼마나 이러한 고뇌가 힘들었으면, 드디어 개발자에게 봄이왔다며 Spring이라 이름을 지었을까..? 그렇기 때문에, 스프링은 자바와 별개가 아니며, IoC와 DI는 객체지향적 관점에서, 스프링을 사용하는 중요한 이유가 된다. IoC(Inversion of Control) : 제어의 역전 기존의 객체를 생성하고, 소멸하는 시점을 결정했던 개발자의 역할(제어..
[주문을 자바] KPT회고
3일간의 짧은 기간동안, 객체지향적인 관점을 가지고 JAVA 언어를 사용하여 프로젝트를 진행했다.이번 프로젝트에서는 음식 주문 시스템에서 팀원들과 회의를 통해 필요한 기능을 정의하고 UML작성을 통해 메소드 및 변수 등 명세를 함께 정했다.  다음은 우리의 프로젝트인 주문을 자바의 기능이다.- 회원가입- 로그인- 가게 등록과 메뉴 등록- 가게 조회- 메뉴 담기- 주문 이를 구현하기 위한 패키지 구조다..├── JavaOrders.iml├── README.md├── code_style.xml└── src ├── InitRestaurantMenu.java ├── Main.java ├── Utils │   └── Util.java ├── cart │   ├── Cart.java..
내가 생각하는 SOLID원칙
SOLID란, 로버트 마틴이 정의한 객체 지향 설계의 중요한 원칙을 두문자어로 표현한 것이다. SOLID 원칙을 단순히 외우는 것을 넘어, 이번 기회에 이 원칙을 이해하고, 다른 개발자 친구들과 함께 서로가 생각하는 SOLID원칙에 대한 생각을 공유하는 시간을 가져보았다. 이러한 시간을 가지며, 좁게만 생각했던 SOLID원칙에 대해 조금은 더 넓게 확장해서 생각할 수 있게 되었고, 각각 다른 개념이라고 생각했던 것이 사실은 모두 이어지는, 연관된 개념이라는 것을 깨닫게 되었다. SOLID의 핵심, 즉 객체 지향 설계의 핵심은 분리에 있다고 생각한다. 그리고, SOLID라는 개념은 하나의 원칙을 지킴으로써, 모두 다 지켜질 수 있는 연관된 개념이다. SRP를 잘 지키기 위해서 분리를 하고, 인터페이스를 만..
폭포수와 애자일, 나는 어떤 방식을 더 선호할까
소프트웨어 개발 방법론 중 가장 자주 비교되는 두 가지는 폭포수와 애자일이다. 폭포수 모델, 우리가 아는 그 의미 그대로 생각해보면 폭포의 위쪽에서 아래쪽으로 떨어지면 다시 위쪽으로 갈 수 없듯이, 개발이 다음 단계로 넘어가면 이전 단계로는 넘어갈 수 없다. 폭포수 모델은 이러한 특징을 가지고 있기때문에, 각 단계에서 결함이 없도록 하기위해 많은 공을 들이게 된다. 이는 즉 소프트웨어가 실제 사용자에게 제공되기까지 많은 시간이 소요된다는 뜻이다. 이러한 모델의 문제점은 다음과 같다. 1. 시장의 트랜드가 변할 수 있다. 2. 구체적으로는, 사용자의 니즈가 변할 수 있다. 3. 즉각적인 사용자의 피드백을 반영할 수 없다. 4. 결과물을 보기까지 오래걸려 개발자들의 사기가 저하될 수 있다. 5. 완벽한 기획..
JAVA를 좋아하는 개발자
자바를 좋아할 뿐만 아니라, 잘하고 싶다. 작년 운 좋게, 좋은 교수님과 연이 닿아 자바의 철학과 매력, 그리고 자바 세상을 맛보게 되었다. 자바의 가장 특징 중 하나는 플랫폼 독립성(Write Once Run Anywhere) 이다. 바로 JVM덕분인데, 이에 대해 알 필요가 있었다. 이렇게 자바를 배우며, 내가 작성한 코드가 컴퓨터 내부에서 어떻게 돌아가는지 원리를 알아가는 과정에서 큰 흥미를 느낄 수 있었다. 원리를 알고 작성한 코드는 같은 결과를 내더라도 다른 성능을 가질 수 있다는 것도 느낄 수 있었다. 그래서 어떤 개발자가 되고 싶은지 생각하고 고민하게 되었고, 이를 통해 자바를 좋아하는 개발자가 된 것 같다. 물론, 원리를 아는 것과 개발을 빠르게, 잘하는 것은 다르다는 괴리감을 느끼기도 했..
개발자로서 클린코드란
저는 보안과 성능을 모두 고려하면서도, 함께 일할 분들과 코드를 통해 의사소통이 가능한 개발자를 꿈꾸고 있습니다.?!저는 설명없이 작성한 코드만을 통해 대화할 수 있는 것이 바로 클린코드라고 생각합니다. 그리고 이러한 클린코드는 아래 3가지를 만족한다고 생각합니다.  1. 읽기 좋은 코드2. 컨벤션을 잘 지키는 코드3. 기능을 명확히 나타내는 코드  사실, 이렇게 생각은 하지만 이를 직접 실천하는 것은 정답 어렵다고 느끼기에, 이를 몸소 이루고 계신 분들을 정말 존경합니다.요새 링크드인에 정말 많은 인사이트가 있는데요. 저는 덕분에 지하철을 타고다니며 링크드인에서 다양한 인사이트를 얻고 있습니다. 그 중 모든 코드는 부채다라며 시작하는 글을 보며, 클린코드와 관련하여 깨달음을 얻은 경험이 있어서 링크를 ..
sooyeon-kr
myGoodPlace