전체 글 170

자바의 정석 공부한것 요약3(Optional, Comparator을 익명클래스, 람다식으로 구현법, 인텔리제이로 커맨드라인cmd 사용법). 공부기간 : 2021-01-28 ~2021-05-17

2021-01-28 Optional 와 OptionalInt , Stream 와 IntStream. , 우선, 그냥 Stream 보다 기본형 Stream 사용시, int sum(), OptionalDouble average() OptionalInt max() OptionalInt min() 등, 숫자를 다루는데 편리한 메서드 들을 제공한다. 또한, 오토박싱& 언박싱으로 인한 비효율을 줄인다. max(),min() 메소드는 일반 Stream에도 정의되어 있는데, 매개변수로, Comparator을 넣어야 한다. pg.841. 이 기본형 스트림 들은, 반환 값으로, 일반 Optional이 아닌, OptionalInt를 사용한다. 2021-02-07 정렬의 기준인, Comparator 구현 하는 3가지 방법( ..

Programming/JAVA 2021.12.14

자바의 정석 공부내용 요약본2. 공부 기간: 2021-01-15~2021-01-28

2021-01-15 람다식을 받을 수 있는 래퍼런스 타입은 무엇인가? 람다식은 익명 객체이다. 즉, 익명 클래스가 선언과 동시에 생성한, 객체이다. 그러나 이 생성된 객체를 받아줄 마땅한 타입의 참조 변수가 존재 하지 않는다.->이유: Object(상위 조상의 래퍼런스)로 받는다면 Object 리모콘에는 내가 람다식으로 만들어낸 메서드가 존재 하지 않기 때문에, 컴파일 에러난다.(업케스팅때의 오류와 비슷,) 따라서 함수형 인터페이스라는 것을 통해, 람다식으로 만들어진 익명객체를 전달 받을 수 있는, 참조변수 타입을 자바에서 새로 만들었다. 다른 관점으로 설명 하자면, 애초에 익명 클래스를 생성 할 때, new 키워드 뒤에 붙이는 타입은 조상클래스의 이름 또는, 구현하고자 하는 인터페이스의 이름을 사용해서..

Programming/JAVA 2021.12.14

자바의 정석 공부내용 요약(인터페이스, 내부클래스, 예외 던지기). 2020-12-31 ~2021-1-15

2020-12-31 오늘의 공부 정리 인터페이스의 장점.-빠른 개발 시간, 서로 관계없는 클래스들끼리의 연결 가능. 표준화가 가능(JDBC을 활용하여 각 sql에 맞게 자바 프로그램을 개발 할 필요 없이 JDBC에 정의된 추상 메소드 들을 적절히 오버라이딩 해서, 사용하면, sql의 종류를 바꾼다 해도, 자바 코드를 그에 맞게 갈아엎을 필요 없음->인터페이스를 통한 표준화) 독립적인 프로그래밍 가능-> 각 클래스들 간의 의존성을 약화시켜서 한 클래스가 변경되어도, 다른 클래스의 코드나 매개변수 등을 변경하지 않아도 됨. 마치 우리가 윈도우 UI가 그대로면, 컴퓨터 내용물이 바뀌어도 전과 똑같이 컴퓨터를 사용할 수 있는 것과 같음. 2021-01-08 오늘의 공부 정리. 내부 클래스는 3가지 유형이 있음...

Programming/JAVA 2021.12.14

스프링 웹 개발 입문강의. 요약.

테스트코드의 given when then 구성 given: 뭔가가 주어졌을 때, when: 이것을 실행했을 때, then: 결과가 이것이 나와야 함. 주석으로 이런 방식으로 테스트 코드 흐름을 구성하면, 가독성이 증가됨. 2021-02-16 스프링 빈 추가하기 첫 번째 방법(컴포넌트 스캔과 자동 의존관계 등록.) @Controller, @Component, @Service, 애너테이션 등으로 스프링 메인 메소드가 실행되었을 때, 스프링 컨테이너에 자체적으로 컴포넌트 스캔을 통해 스프링이 스프링 컨테이너의 구성요소(빈)으로 추가해주는 것이다. 여기서 컴포넌트 스캔의 범위는 메인 메서드가 있는 상위 패키지에 구현된 모든 패키지들을 뒤져서 다 스프링의 빈으로 추가해 주는 것이다. 여기서 파란색 펜 부분이, 컴..

인텔리제이 테스트 코드 작성 Tip.

Test 코드 작성 시 assert j assertJ의 static 메서드인, assertThat()을 사용하여, 에러메세지와, 테스트 코드의 가독성을 높여준다. assertThat(Actual).isEqualsTo(Expect); Actual:실제값, Expect: 기댓값. Intelli static import 빠르게 하는 법 art+enter 쳐서 옵션 선택하면, 자동으로 import 됨. assertThat 메서드 쓸 때, 사용. Test코드의 @AfterEach 애너테이션의 필요성 @AfterEach : 한번에 여러 테스트를 실행하면 메모리 DB에 직전 테스트의 결과가 남을 수 있다. 이렇게 되면 다음 이전 테스트 때문에 다음 테스트가 실패할 가능성이 있다. @AfterEach 를 사용하면 각 ..

스프링 웹 개발 입문(인프런 강의 요약). 2021-12-14

웹 서버에서 클라이언트에게 데이터를 전송하는 형태는 크게 정적 컨텐츠 전달 MVC와 템플릿 엔진의 동작 API의 전달 로 나뉘어 진다. 정적 컨텐츠 전달은 사용자가 url에 /hello-static.html 이라는 것을 요청하면 단순하게 우선 스프링은 스프링 컨테이너에 같은 이름의 컨트롤러(@라는 애너테이션이 붙은 것중 @Get Mapping 의 파라미터로 같은 이름이 있는지)가 있는지 확인 하고, 없으면, resources의 static이라는 파일에 같은 이름의 데이터가 있는지 확인하고, 있으면, 그대로 반환해준다. MVC는 model, view, controller 의 약자로, 사용자가 url에 hello-mvc 라는 걸 요청하면 스프링은 @Controller가 붙은 컨트롤러에서 구현된 클래스 중, ..

현대자동차 계약직 1차 서류 합격.

오늘 아침에 어떤 문자가 와있길래 확인했더니, 11월 15일날 현대자동차 채용공고를 보고 지원한 프랜트 부문 엔지니어 서류낸 것이 합격이 되었다. 내가 낸 서류는 1.학력사항, 2. 회사 경력, 3.자격증, 군복무 4. 고등학교 생활기록부 행동 및 종합특성의견(담임선생님이 적어주시는 부분) 과 3개년 출결사항, 1학년 ~3학년 까지 전 교과성적 5. 자소서 이렇다. 내 첫 대기업 입사지원인지라 긴가민가 했는데 걸리다니 너무 기분이 좋았다. 또 입사지원할떄 놀랬던 점은 고등학교 생활기록부를 첨부해야 한다는 사실과 성적과 출결을 입력해야 한다는 것이였다. 역시 개근하길 잘했다...ㅎㅎ 나름 고등학교때 공부를 열심히 했던지라, 옛날 내 성적을 하나하나 입력하다보니 자존감도 많이 올라갔다. 2021년 11월 1..

MY HISTORY 2021.12.07

빈 라이프 사이클. InitializingBean, DiposableBean. 2021-11-29

우선 스프링 빈은 생명주기를 갖는다. 또 빈의 라이프 사이클은 스프링 컨테이너에 의해 관리받는다. 순서대로 빈 객체생성 -> 의존주입 -> 객체 초기화 -> 객체 소멸. 이런 주기를 갖는다. 모든 스프링 설정클래스에 의해 컨테이너에 등록되는 빈 객체는 위와같은 생명주기를 따른다. 컨테이너에 등록된 빈을 getBean() 메서드에 의해 사용가능한 기간은 초기화와 소멸 사이의 기간이다. 빈 객체의 소멸은 AnnotationConfigApplicationContext 클래스의 부모 클래스인 AbstractApplicationContext에 구현된 close() 메서드를 호출하면 된다. 그런데 이런 라이프사이클이 중요한 이유는 빈의 초기화와 소멸 단계에서 프로그램의 필요에 의해 수행되어야 하는 과정이 있을 경우..

@Component, 컴포넌트 스캔( 자동 스프링 빈 등록). 2021-11-23

우리는 그전까지는 @Configuration 애너테이션을 통해서 직접 스프링 설정 클래스를 작성해서 스프링 컨테이너에 등록하였다. 이 방법은 설정 클래스의 코드가 너무 길어진다는 단점이 있다. 앞 포스팅에서 설명했듯, @Autowired도 기존에는 생성자나 세터메서드 방식으로 의존 주입하던 방식에서 스프링에서 자동으로 의존 주입을 해준다. 그렇기때문에 설정 클래스의 코드가 더 간결해졌다. 이 @Component 애너테이션도 마찬가지이다. 이 애너테이션을 스프링 빈 객체로 등록하고자 하는 클래스에 붙이면, 스프링 설정클래스(@Configuration) 에서 등록할 필요 없이 스프링이 알아서 등록 해 준다. 예를 들면 기존에는, @Configuration public class AppCtx { @Bean p..