전체 글
-
인터넷 브라우저에 URL 요청을 했을 때개인 공부/spring 2021. 5. 21. 14:29
우리가 인터넷으로 url 요청을 했을때 일어나는 일에 대해서 내가 알고 있는대로 정리해보려고 한다. 이 페이지를 들어오기 위해서는 다음과 같이 요청을 해야하는데. 저 글자로 어떻게 이 페이지를 연결해주는 걸까? 우리가 저렇게 url을 입력했을때 브라우저는 다음과 같이 해석을 한다. 그리고 이 내용으로 브라우저는 통신을 준비하게 되는데 현재 가장 널리 쓰이는 방식은 TCP이다. 최근에는 UDP가 더 빠르고 TCP보다 유연하게 사용이 가능해서 좋다는 얘기가 있는데 그래도 TCP를 알면 UDP의 기본은 다 알고 가는거니까 TCP로 예시를 들어보겠다. 우리가 알고있는 이 네트워크 계층에서 Application 계층에서 HTTP를 통해 Transport로 우리의 url 정보를 전달한다. 그 후 Transport ..
-
spring[7] @Bean 생명주기개인 공부/spring 2021. 5. 20. 22:46
Bean의 생명주기 Service로직을 구현하는 구현체 Bean도 있겠지만 web application에서 DB connection pool이나 socket과 같이 application 시작 시점에 미리 생성해두고 종료 시점에 종료시키는 작업을 진행해야하는 경우도 있습니다. spring에서는 이 작업을 어떻게 실행하고 있는지 알아보겠습니다. DB에 연결하는 예시를 코드로 살펴보겠습니다. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url..
-
spring[6] DI 의존관계 주입개인 공부/spring 2021. 5. 19. 16:14
DI (의존관계 주입) 의존관계 주입의 방법은 크게 4가지가 존재합니다. 생성자 주입 수정자(setter) 주입 필드 주입 일반 메서드 주입 생성자 주입 특징 생성자 호출 시점에 1번만 호출되는 것을 보장합니다. 불변, 필수 의존관계에 사용됩니다.만약 spring bean class에 생성자가 단 1개라면 @Autowired가 생략되어도 spring이 자동으로 주입해줍니다.위 코드와 아래 코드와 동일한 실행 결과가 나옵니다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolic..
-
spring[5] ComponentScan과 Component개인 공부/spring 2021. 5. 16. 08:48
Component Sacn 지금까지 빈을 등록하기 위해서 AppConfig class에 사용자가 일일히 @Bean으로 관리해주어야 했습니다. 하지만 이건 개발자에게 너무 귀찮은 작업이고 누락하게 되면 큰 장애가 발생하게됩니다. 그래서 Spring은 @Bean으로 일일히 등록하지 않아도 자동으로 스프링 빈으로 등록해주는 @ComponentScan과 @Component annotation을 제공합니다. 컴포넌트 스캔을 사용하게 되면 DI가 애매해집니다. 지금까진 수동으로 의존관계를 주입했지만 Bean이 자동으로 등록되게되니 의존관계를 설정할 수 있는 부분이 사라진것입니다. 그래서 @Autowired annotation을 지원한다. @Autowired에 대한 부분은 다음에 공부해보겠습니다. Component ..
-
Spring[4] Spring의 Singleton Container개인 공부/spring 2021. 5. 15. 19:54
Singleton 싱글톤이란? Web application은 일반적으로 다수의 사용자가 하나의 Server에 동시의 많은 요청을 하게됩니다. Singleton으로 디자인하지 않은 Web application의 java는 사용자의 요청마다 하나의 객체를 생성하게 되고 10,000건의 요청은 10,000개의 객체를 상속받은 객체라면 그 이상의 객체를 생성하게 됩니다. 이러한 방식으로 디자인된 application은 엄청난 메모리 낭비를 하게됩니다. 싱글톤 디자인을 사용하게 되면 java server에서 여러개의 요청이 들어와도 class Instance가 1개만 생성되는 것을 보장하게됩니다. java로 싱글톤 패턴을 구현해보기static final을 사용하여 java server에서는 오직 한개의 insta..
-
Spring[3] Spring Container와 Spring bean개인 공부/spring 2021. 5. 15. 11:48
Spring 적용해보기 AppConfig Spring 기반으로 변경 @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } } 기존의 AppConfig 파일을 Spring annotation을 사용하여 Spring Container로 등록합니다. Spring Container란 ApplicationContext를 Spring Container라 부릅니다. Ap..
-
spring[2] Spring을 사용하지 않은 Java Web Project개인 공부/spring 2021. 5. 14. 22:50
Spring을 사용하지 않은 Java Web Project control과 view는 생각하지 않고 Model service 로직만 생각하여 예시를 들어보겠습니다. 회원가입 Model (class) 모델 객체를 만듭니다. Service (Interface) 인터페이스를 만들고 ServiceImpl (class) 구현체를 만듭니다. code를 테스트 해봅니다. Model 객체 생성 public class Member { private Long id; private String name; public Member(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId..
-
MVC 패턴개인 공부/spring 2021. 5. 10. 14:03
MVC란 MVC 탄생 배경 예전의 프로그램 개발자들은 자기 마음대로 프로그램을 구성하고 작성했습니다. 이런 프로그램은 초기에 만들기엔 괜찮았을지 몰라도 유지보수나 협업을 하는 과정에서 누구와 만나냐에 따라 프로그램 구조가 달라지고 유지보수도 팀이 바뀔때마다 구조를 새로 배우며 작업을 해야했습니다. 그래서 이걸 해결하기 위해 프로그램을 작성할때 협업과 유지보수가 쉬운 코드 구성법에 대해 고민하게 되었고 그렇게 수 많은 패턴들이 공유되고 논문으로 발표되었고 그 중 하나의 패턴이 MVC 패턴입니다. MVC 정의 MVC Pattern이란 개발자들이 소프트웨어를 개발할 때 사용되는 디자인 패턴을 말합니다. 수많은 디자인 패턴이 존재하는데 그 중 MVC 패턴은 Model-View-Controller로 client와..