본문 바로가기

분류 전체보기76

[토비의스프링] 1-6 싱글톤 레지스트리와 오브젝트 스코프 싱글톤 레지스트리와 오브젝트 스코프 싱글톤 레지스트리 애플리케이션 컨텍스트는 우리가 만들었던 오브젝트 팩토리와 비슷한 방식으로 동작하는 loC 컨테이너다. 그러면서 동시에 이 애플리케이션 컨텍스트는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리singleton registry이기도 하다. 디자인 패턴에서 나오는 싱글톤 패턴과 비슷한 개념이지만 그 구현 방법은 확연히 다르다. (영한님 강의 ApplicationContext로 테스트 하는 것이 나왔다고 한다.) 스펙에서 강제하진 않지만, 서블릿은 대부분 멀티스레드 환경에서 싱글톤으로 동작한다. 애플리케이션 안에 제한된 수, 대개 한 개의 오브젝트만 만들어서 사용하는 것이 싱글톤 패턴의 원리다. 싱글톤패턴의 한계 private으로 바뀐 생성자는 외부에서 호출할.. 2022. 3. 30.
[토비의스프링] 1-5 스프링의 IoC 스프링의 IoC 스프링의 핵심을 담당하는 건, 바로 빈 팩토리 또는 애플리케이션 컨텍스트라고 불리는 것이다. 스프링에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리bean factory라고 부른다. 보통 빈 팩토리보다는 이를 좀 더 확장한 애플리케이션 컨텍스트application context를 주로 사용한다. 기존 DaoFactory 코드에는 설정정보, 예를 들어 어떤 클래스의 오브젝트를 생성하고 어디에서 사용하도록 연결해줄 것인가 등에 관한 정보가 평범한 자바 코드로 만들어져 있다. 애플리케이션 컨텍스트는 직접 이런 정보를 담고 있진 않다. 대신 별도로 설정정보를 담고 있는 무엇인가를 가져와 이를 활용하는 범용적인 IoC엔진 같은 것이라고 볼수 있다. 오브젝트 설정 방법 .. 2022. 3. 30.
객체지향과 디자인패턴 책거리 객체지향과 디자인패턴 책을 읽고 발표하는 스터디를 두 달간 진행했고, 저번주 끝이 났다. 1월말부터 3월말까지 2달동안 일주일에 한 번 진행되었고, 객체지향 부분은 일주일에 한 챕터씩 읽고 , 디자인 패턴은 한 주간 4개의 패턴을 훑을 수 있는 진도였다. 책 한권을 다 읽고 나니 너무 뿌듯하다. 그리고 스프링을 공부하기 전에 객체지향에 대해서 먼저 얇은 책을 통해 개념들을 공부할 수 있어서 스프링을 시작하는 것에 흥미를 더해주었다. 스프링 시작 전에 자바를 공부하면서 최범균님의 객체지향과 디자인패턴을 같이 병행해보는 것을 추천한다. 얇은 책으로 개념을 예시코드들과 함께 익힐 수 있어서 이해했고, 다음에 적용해보고 싶다는 성취감을 느끼면서 공부할 수 있는 책이다. 2022. 3. 28.
HTTP 개관 HTTP 개관 웹 브라우저와 웹 서버가 기본적인 트랜잭션(요청 명령과 응답 결과)을 구현하기 위해 어떻게 메세지를 주고 받는지 알아본다. 학습목표 얼마나 많은 클라이언트가 서버와 통신하는지 리소스가 어디서 오는지 웹 트랜잭션이 어떻게 동작하는지 HTTP 통신을 위해 사용하는 메세지의 형식 HTTP 기저의 TCP 네트워크 전송 여러 종류의 HTTP 프로토콜 인터넷 곳곳에 설치된 다양한 HTTP 구성요소 리소스 웹 리소스 : 웹에 콘텐츠를 제공하는 모든 것 정적 파일 동적 파일 : 요청에 따라 콘텐츠를 생산하는 프로그램 통해 생산 미디어 타입(MIME 타입) 웹서버는 모든 HTTP객체 데이터에 MIME 타입을 붙인다. 웹브라우저는 서버에서 객체를 받을 때 다룰 수 있는 객체인지 MIME 타입을 통해 확인 구.. 2022. 3. 28.
[토비의스프링] 1장 오브젝트와 의존관계 - DAO(1) 느낀점 스프링은 객체지향이다. 객체지향은 리팩토링을 위한 것 같다. 오늘 읽은 파트는 최범균님의 "객체지향과 디자인패턴" 책의 더 긴 버젼같다. 한 줄 요약 "스프링은 오브젝트를 어떻게 효과적으로 설계하고 구현하고, 사용하고, 이를 개선 해나갈 것인가에 대한 명쾌한 기준을 마련해준다." "리팩토링은 개발자가 직관적으로 수행할 수 있긴 하지만. 본격적으로 적용하려면 학습과 훈련 이 필요하다. 나쁜 냄새에는 어떤 종류가 있다" 내용 요약 DAO클래스의 문제점 DB에서 데이터를 가져오는 DAO클래스를 절차적으로 작성한 후 어떻게 테스트하고 어떻게 재사용할 것인지에 대해 다룬다. main()를 통한 테스트 : 처음에는 해당 DAO 클래스 내에서의 main()메서드에서 테스트하는 방법을 소개한다. 문제점 :mai.. 2022. 3. 16.
회사선택 기준 회사 선택 기준 회사선택 기준에 대해 좋은 글을 볼 때마다 추가해보려고 한다. 출처: 뉴스레터 썸원 💭 커리어를 발전시킨다는 것이 가지는 구체적인 의미 사람들은 흔히 커리어를 잘 쌓기 위해, '자기 개발에 노력을 기울이면 된다'고 생각하는 경향이 있습니다. 이를테면, ‘이런이런 스킬셋을 익히면 잘 될 거야’라고 생각하는 것이죠. 하지만 기술 습득은 커리어를 발전시키는 데 있어 극히 일부분에 불과합니다. 사실 커리어를 발전시키는 데 있어서 스킬보다는 ‘어떤 환경 속에 놓여 있느냐’가 훨씬 더 중요합니다. 어떤 환경에 처해 있느냐에 따라, 당신의 잠재력이 증폭될 수도 있고, 제한될 수도 있는 것이죠. 따라서 커리어를 발전시키는 데 있어서, 환경 변수를 완전히 무시하는 것은 그리 적절한 태도가 .. 2022. 3. 14.
intellij 테스트 코드 live templates 설정 테스트 코드 live templates 인텔리제이 live templates 설정은 테스트 코드 작성할 때 아래 처럼 반복되는 주석을 템플릿으로 설정해 자동으로 작성하는 방법이다. //given //when //then설정 방법 Settings/Editor/Live Templates 오른쪽 + 버튼을 눌러 새로운 템플릿을 생성한다. abbreviation은 템플릿에 사용할 축약명이므로 쉬운 이름으로 작성한다. "tdd"는 메서드 선언부까지 나오도록 설정하고, "tdd2"는 주석만 나오도록 설정했다. Template text란에 반복적으로 나올 코드를 적는다. - 메서드 선언부까지 나오는 템플릿 생성 @Test public void $name$ { //given //when //then } - 주석만 나오.. 2022. 3. 12.
JAVA11 설치하기 시스템 환경변수, Path등록 JAVA_HOME등록 Path에 %JAVA_HOME\bin 등록 2022. 3. 12.
컨트롤러, form action경로 설정 디렉토리 구성 및 세팅 src/main/resources └ static └ templates static : 정적 파일을 관리하는 곳으로 css, fonts, images, js 폴더를 생성하고 넣는다. templates : 동적 파일을 관리하는 곳으로 html 파일을 넣는다. application.properties 관련설정 #템플릿 시작 위치 참조 spring.thymeleaf.prefix=classpath:templates/ #템플릿의 확장자 이름 참조 spring.thymeleaf.suffix=.html #해당위치에 파일이 있는지 없는지 체크 spring.thymeleaf.check-template-location=true #캐시를 남기지 않는다. spring.thymeleaf.cache=fal.. 2022. 3. 2.
git warning: LF will be replaced by CRLF git에서 CRLF 개행 문자 차이로 인한 문제 해결 에러 메세지 warning: LF will be replaced by CRLF in The file will have its original line endings in your working directory원인 OS마다 줄바꿈을 인식하는 문자열이 다르기 때문에 형상 관리를 해주는 git이 바라 볼 때 어느 쪽을 선택할지 몰라 경고 메세지 발생. LF (Line-Feed) 현재 위치에서 바로 아래로 이동 CR (Carrage Return) 커서 위치를 맨 앞으로 이동 CRLF (Carrage-Return + Line Feed) 커서를 다음 라인 맨 앞으로 이동 해결방법 윈도우에서는 CRLF 를 사용하므로 저장소에서 가져올 때 LF 를 CRLF 로 변.. 2022. 3. 2.
자바 2주차 WIL 일급컬렉션 2022. 2. 27.
두 개의 리스트List값 비교 방법 List.containsAll() : 2개 리스트의 값이 모두 같은지 아닌지만 확인. Arrays.equals() : 1번과 마찬가지이다. 매개변수는 배열 타입이다. 데이터 순서까지 같아야 true. ArrayList를 Collection으로 변환 후 removeAll() : 값이 같은 데이터를 모두 삭제하고 true/false리턴 contains()와 반복문을 사용 : 같은 데이터가 있는지 확인하고 리턴되는 boolean으로 추후 처리가능. 2. Arrays.equals() : 1번과 마찬가지이다. 매개변수는 배열 타입이다. 데이터 순서까지 같아야 true. 그러므로, Collections.sort()로 정렬한 후에 값을 비교한다. 3. ArrayList를 Collection으로 변환 후 removeA.. 2022. 2. 22.