일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 빌드
- 루프
- 제네릭
- 무한
- 메소드
- Jenkins
- 싱글톤
- suvlet
- unboxing
- 싱글턴
- bootstrap
- Short
- 내장객체
- maven
- 콜렉션
- boxing
- 컬렉션
- 클래스
- dependency
- 스프링
- 인텔리제이
- 제너릭
- https://start.spring.io
- wrapper
- Java
- 박싱
- start.spring.io
- 자동형변환
- Scanner
- 언박싱
- Today
- Total
목록분류 전체보기 (447)
Developer Gonie
스프링 빈(Spring Bean) Spring에 의해서 자동으로 필요한 곳에 사용되고, 관리되는 '객체'를 Spring Bean이라고 부른다. 더 정확히는 Spring IoC 컨테이너가 관리중인 객체들을 말한다. 그냥 new 클래스이름 해서 객체를 생성하면, 이 객체는 스프링에 의해 자동으로 관리되지 않는다. 특정 객체가 Spring IoC 컨테이너에 의해 자동으로 관리되도록 등록하기 위해서는 별도의 과정이 필요한데 여기에는 2가지 방법이 있다. 두 가지 방법 모두 알고 있어야 한다. 이건 맨 마지막에 알아보자. 그럼 왜 굳이 객체를 등록해서 Spring IoC 컨테이너가 관리하도록 하는 것일까? 특정 클래스의 생성자가 파라미터로 외부의 객체를 받아들이는 코드가 있고, 나는 이 최종 클래스의 객체를 생성..
스프링빈을 등록하는 2가지 방법 * 두가지 방법을 모두 알고 있어야 한다. 방법1. 컴포넌트 스캔과 자동 의존관계 설정 방법2. 자바 코드로 직접 스프링빈 등록하기 이번 게시물에서는 방법1 을 배워보고, 다음 게시물에서 방법2 를 배워본다. MemberController가 MemberService를 통해 회원가입하고, MemberService를 통해 데이터를 조회할 수 있어야 한다. 이런 관계를 서로 의존관계가 있다 라고 표현하는데 MemberController가 MemberService에 의존한다라고 말한다. 이제 이 작업을 스프링 스럽게 해볼 것이다. 1. MemberController 클래스 추가 2. MemberController 클래스에 @Controller 어노테이션 부착 여기까지 해두면 기능..
코드상에서 문제가 없는거같은데 이 에러가 자꾸 발생하면 위 두가지 사항을 꼭 체크하자.
이번 게시물 흐름 요약 service 패키지 위치에서 생성한 MemberService 클래스 내의 메서드 들을 테스트 한다. 특히 join (회원가입) 메소드에서 중복 이름을 가진 회원을 등록하려는 경우 예외가 발생 하는지, 그리고 그 예외에서 발생시킨 에러 메세지가 예측한 것과 같은지를 체크함 테스트 코드 관련해서 추가적으로 알려주신 부분 * 테스트 코드 기본틀을 자동으로 생성하는 방법 클래스 내부 - 오른쪽 마우스 - Generate... - Test..., Testing library는 JUnit5 선택, 테스트 코드 작성할 메소드 선택 후 OK 이러면 내가 지정한 클래스의 폴더구조까지 같게 테스트 클래스가 생성된다. * 테스트 메소드의 이름은 과감하게 한글로 바꿔도 된다. 실제 프로덕션 코드에 대..
* 서비스 코드 작성시 메소드의 이름을 비지니스에서 가져온 용어들로 사용해야 하는 이유 service 패키지 내의 MemberService 클래스 내부의 메소드를 구현할 때, 비지니스에서 가져온 용어들로 사용하였다. 이는 이전에 repository 패키지 내의 클래스 내부의 메소드 이름을 지정한 것과 다른 점인데, 이래야 기획자들하고의 의사소통이 원활하기 때문이다. 예를들면, 기획자가 회원가입쪽이 이상해요 하면 join 메서드 쪽을 살펴봐야 하는구나 하고 바로 매칭이 되어 편리해진다. 1. java/hello.hellospring 아래에 service 패키지 생성 2. 위 패키지 내에 MemberService 클래스 생성 후 코드 작성 package hello.hellospring.service; imp..
MemoryMemberRepository 클래스 관련, 테스트 케이스 작성 * 테스트 케이스 작성이 필요한 이유 혼자 개발할 때는 괜찮은데 여러명에서 개발할 때, 혹은 코드가 몇만 라인을 넘어가면 테스트 코드 없이 개발하는게 거의 불가능하다고 한다. 물론 할 수 있지만 정말 문제가 많다는 말씀이다. 실무에서는 테스트를 빌드툴하고 묶어서 테스트 케이스를 통과하지 못하면 다음 단계로 못 넘어가게 막아버린다고 한다. 중요하니 꼭 '테스트' 관련해서 깊이있는 공부를 권장하심. 아래서 한 방식은 구현 클래스를 작성하고 나서 테스트 케이스를 작성한 것인데, 테스트 주도개발 방식이라고 불리는 TDD는 테스트 케이스를 먼저 작성하고 이거에 문제 없이 작동하도록 구현 클래스를 작성하는 것이다. 이런게 있다는 것 정도는 ..
스트림(Java 8부터 추가됨) * 스트림이란? Stream 반복자는 Iterator 반복자와 비슷하게 컬렉션(배열포함)의 저장 요소를 하나씩 참조하는 비슷한 역할을 하지만 다음과 같은 다른점을 가지고 있다.(여기서 말하는 컬렉션은 List, Set 인터페이스의 부모 인터페이스 Collection의 모든 자식들을 의미하는 것 같다. 애초에 Iterator를 사용할 수 있는 것들도 Collection 인터페이스의 자식들이었음) 스트림은 1) 하나씩 참조한 요소를 람다식으로 처리할 수 있도록 한다. 2) 내부 반복자를 사용하므로 병렬 처리가 쉽다. 3) 중간 처리와 최종 처리 작업을 수행할 수 있다. 각각의 다른점에 대한 얘기는 아래서 살펴보자. Java 8부터 Iterator 반복자를 대신해 사용할 수 있..
람다식(Java 8부터 추가됨) * 람다식이란? 람다식은 매개변수를 가진 코드블록으로 런타임 시에 이를 실행할 수 있도록 익명 구현 객체를 생성한다. 익명 함수를 생성하기 위한 식으로 '객체 지향 언어' 보다 '함수 지향 언어'에 가깝다. Lisp, Scheme와 같은 함수적 프로그래밍 언어들은 과거에 학계 외에 현업에서 큰 호응을 얻지 못하였는데, 최근에 들어와서 병렬처리와 이벤트 지향 프로그래밍에 적합해 다시 부각되고 있다. 함수적 프로그래밍과 객체 지향 프로그래밍은 다른데 이 둘을 혼합하여 사용하도록 프로그래밍 언어가 바뀌고 있는 것이다. * Java에서 람다식을 수용한 이유 자바 코드가 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다. (여기서 ..
* JDBC 를 사용할 때의 첫번째 과정인 드라이버를 로드하는 코드는 생략해도 정상작동 한다. // 1. 드라이버 로드 Class.forName("oracle.jdbc.driver.OracleDriver");
int result 를 -1로 초기화 하는 이유 : 아래의 3가지 경우를 구분하기 위함. int 메소드(){ int result = -1; String sql = "쿼리문" PreparedStatement ps = conn.prepareStatement(sql); result = ps.executeUpdate(); return result; } 다른 위치에서 result의 값을 받아봐 알 수 있는 정보 if (result > 0) // 쿼리문이 정상적으로 실행되었고 result 개가 수행되었구나 else if(result == 0) //쿼리문이 정상적으로 실행되었지만, where 절 조건에 부합하는 레코드가 없구나 else if(result == -1) //쿼리문 실행중에 예외가 발생하여 executeU..