[Java] 스프링 개구리 책 - 붕어빵틀과 붕어빵에 대한 오해
·
BackEnd/Java
흔히들 자바의 클래스를 설명할때 붕어빵과 붕어빵 틀에 대해 얘기한다.내가 요즘 읽고있는 책에서는 이러한 설명방식이 잘못된 설명방식 이라고 이야기 한다.평소에 붕어빵틀 - 붕어빵으로 클래스를 이해해 왔기에 글을 읽고 생각하는 시간을 가져보았다.클래스 vs 객체 - 붕어빵틀과 붕어빵??..클래스 객체명 = new 클래스();여기 까지는 이해하기 어렵지 않다.그렇다면 아래 코드는?붕어빵틀 붕어빵 = new 붕어빵틀(); ??바로 위의 코드가 논리에 맞다고 생각한다면, 다시 한 번 생각해보는 것이 좋을 것 같다..위의 코드를 이해하기 쉽도록 문장으로 풀어본다면,새로운 붕어빵틀을 만들었더니 붕어빵이 되었다 이것이 붕어빵틀 to 붕어빵으로 이해하여 오류가 생긴 부분이라고 생각한다.객체지향적인 개발을 할때는 반드시 ..
[Java] 순수 자바 코드로 스프링 프레임워크 구현하기 - Servlet
·
BackEnd/Java
사내 스터디로 스프링 프레임워크를 직접 자바 코드로 구현하는 것을 주제로 잡아 공부하고 있다.첫번째는 Servlet이다.Servlet 이란?Servlet은 자바를 사용하여 웹 서버에서 실행되는 서버 프로그램입니다.보통 HTTP 요청을 처리하고, 동적인 웹 콘텐츠를 생성하는데 사용을 합니다.서블릿은 Java EE(Enterprise Edition) 플랫폼의 일부로,웹 애플리케이션의 요청과 응답을 처리하기 위한 표준 API를 제공합니다.Servlet 의 주요 특징Servlet은 자바 클래스이며, 'javax.servlet' 패키지에 속합니다. HttpServlet 클래스를 상속받아 구현됩니다.Servlet은 생성, 초기화, 요청 처리, 소멸 의 순서로 라이프사이클을 가집니다.Servlet 구현 및 테스트스터..
[CS,코딩테스트] 코딩테스트의 시간 복잡도에 관하여
·
공부중
시간 복잡도 표기법 알아보기 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말합니다. 일반적으로 수행시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측합니다. 빅-오메가: 최선일 때의 연산 횟수를 나타낸 표기법 빅-세타: 보통일 때의 연산 횟수를 나타낸 표기법 빅-오: 최악일 때의 연산 횟수를 나타낸 표기법 예로, for loop를 0~100 까지 반복하는 코드가 있고, if 문을 통해 return하는 함수가 존재할때, 최선일 때 - 1회만에 바로 성공 - 빅-오메가 보통일 때 - 50회에 성공 - 빅-세타 최악일 때 - 100회 마지막에 성공 - 빅-오 코딩 테스트에서 사용하는 시간복잡도 유형 코딩 테스트에서는 빅-오 표기법을 기준으로 수행 시간을 계산하는 것이 좋습니다. 왜냐..
[CS] HTTP 메서드의 속성 및 활용 설계 예시
·
공부중
모든 개발자를 위한 HTTP 웹 기본 지식 | 김영한 - 인프런 김영한 | 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연 www.inflearn.com HTTP 메서드 API URI 설계 가장 중요한 것은 리소스 식별이다. 회원을 등록하고 수정하고 조회하는게 리소스가 아니다. 회원이라는 개념 자체가 바로 리소스이다. 리소스는 어떻게 식별하는게 좋을까? 회원을 등록하고 수정하고 조회하는 것을 모두 배제 회원이라는 리소스만 식별하면 된다 → 회원 리소스를 URI에 매핑 리소스를 바탕으로 구현한 api는 어떻게 구분해야 할까? URI는 리소스만 식별한다. 리소스..
[Spring] 싱글톤 컨테이너, 컴포넌트와 컴포넌트 스캔
·
BackEnd/Java
싱글톤 컨테이너 스프링 컨테이너는 싱글톤 패턴의 문제점들을 해결하면서, 객체 인스턴스를 싱글톤으로 생성한다. 스프링에서는 싱글톤 패턴을 구현하기 위한 지저분한 코드가 필요없다. DIP, OCP , 테스트, private 생성자로 부터 자유로워진다. 스프링 컨테이너를 사용하면 기본적으로 싱글톤으로 사용된다. 싱글톤 방식말고 요청할때마다 새로운 객체를 생성해서 반환하는 기능도 제공한다. 하지만 거의 대부분 99% 싱글톤 방식을 사용한다. 싱글톤 방식의 주의점 싱글톤 패턴이든, 스프링 컨테이너든, 하나만 생성해서 공유하는 싱글톤 방식은, 상태를 유지하게 설계되면 안된다. 무상태로 설계해야한다 특정 클라이언트에 의존적인 필드가 있으면 안된다. 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다. 가급적..
[Spring] BeanFactory와 ApplicationContext 이해하기
·
BackEnd
BeanFactory와 ApplicationContext BeanFactory 스프링 컨테이너의 최상위 인터페이스다 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean() 을 제공한다. ApplicationContext BeanFactory의 기능을 모두 상속받아서 제공합니다. BeanFactory를 상속받아 사용하는데 왜 굳이 ApplicationContext를 사용할까? 애플리케이션을 개발할 때에는 빈 관리 기능 및 많은 부가기능이 필요하다. 결론적으로 BeanFactory의 기능을 상속받아 빈 관리기능 + 편리한 부가기능 BeanFactory의 상위호환? 느낌이라고 생각하면 편하다. 어떤 부가기능을 제공할까? 메세지소스를 활용한 국제화 기능 국제화 기능? 한국이면 한국어 영어면 영어 등등..
[Spring] 스프링 컨테이너와 빈
·
BackEnd
스프링 컨테이너와 빈 정확히는 스프링 컨테이너를 부를때 BeanFactory, ApplicationContext 두개로 구분해서 설명한다. BeanFactory를 직접 사용하는 경우는 거의 없음으로, ApplicationContext를 일반적으로 스프링 컨테이너라고 부른다. 빈은 메서드 이름을 사용할 수 있다. 빈 이름을 직접 부여할 수도 있다. 하지만 항상 다른 이름을 사용하자 만약 이름이 같다면 덮어버리면서 오류가 생길 수 있다. 무조건 단순하고 명확하게 개발해야 한다. 최근, Spring Boot 같은 경우 충돌이 생기면 default로 주의를 주며 스프링이 종료된다. @Configuration public class AppConfig { @Bean private static MemberReposi..
[Spring] 스프링 핵심원리 - 기본편 / 관심사의 분리
·
BackEnd
관심사의 분리 각각의 인터페이스를 배역 이라고 생각. 배역에 맞는 배우를 선택하는 것은 누가하는가? 공연 기획자 기획팀에서 다 하는거지 배우라는 사람이 섭외하는게 아니다. AppConfig 애플리케이션의 전체 동작 방식을 구성(config) 하기 위해, **“구현 객체를 생성”**하고, “연결” 하는 책임을 가지는 별도의 설정 플레이스를 만들어서 해결한다. // 문제 // 인터페이스 - 인터페이스 로 이루지지않고 // 인터페이스 - 구현체 로 이루어 져있으며 // 이는 DIP를 위반한다. public class MemberServiceImpl implements MemberService{ public final MemberRepository memberRepository = new MemoryMember..