자바에서 인터페이스는 추상클래스처럼 추상 메서드를 갖는다. 추상 클래스와 차이점은 멤버 변수를 구성원으로 가질 수 없고 메서드는 구현되어 있지 않아야 한다. 보통 인터페이스를 밑그림만 그려진 '기본 설계도' 라고 한다. 그럼 도대체 이러한 특성을 가지는 인터페이스를 왜 사용하는 걸까? 1. 구현을 강제 시킨다. interface Login { void login(); } public class KakaoLogin implements Login{ @Override public void login() { System.out.println("카카오로 로그인 합니다."); } } 위 코드와 같이 Login을 implements하게 될 경우 Login의 메서드인 login을 반드시 KakaoLogin에서 구현해 ..
StringBuffer와 StringBuilder의 차이를 보기전에 먼저 String 객체의 특성과 StringBuffer객체의 특성의 차이점을 먼저 살펴보아야 한다. 자바에서는 문자열을 String 객체로 많이 처리 한다. 특히, 문자열 리터럴의 경우 프로그램 실행시 자동으로 생성이 되는데, 이는 Constant Pool(상수 저장소)에 저장된다. 이때, 문자열들을 서로 결합하기위에 += 연산을 하게 되는데, String 객체는 불변(immutable) 하기 때문에 += 연산을 수행할 때마다 constant pool에 새로운 문자열 객체가 생겨나게 된다. 이렇게 되면 복잡한 문자열을 계산할때 쓸때없는 문자열 객체가 계속 쌓이게 되므로 비효율 적이다. 이를 해결하기 위한 것이 StringBuffer 객체..
우선 application.yml 설정파일을 생성하여 다음과 같이 세팅해준다. db 접근하는 url을 설정해주고 jpa의 hibernate가 ddl을 자동으로 만들어주는 셋팅으로 create 모드를 적용한다. (현업에서는 테이블이 갱신되기 때문에 절때 사용하면 안되지만 지금은 연습이기 때문에 create로 설정한다) 그림에서 본것과 같이 hibernate의 show_sql을 사용하면 System.out.println으로 처리되기 때문에 실제 운영상황에서는 로깅으로 처리해야하므로 다음의 셋팅을 사용하지 않는다. 대신 밑에 logging 으로 hibernate.SQL을 debug모드로 설정하면 로그레벨을 디버그로 볼 수 있다. 이러한 설정들은 사실 전부 스프링 공식 사이트에서 하나씩 보며 공부하면 충분히 해..
다운로드 : https://www.h2database.com h2.bat 경로 : C:\Program Files (x86)\H2\bin 설치후 h2.bat 실행 (윈도우 기준) h2.bat 켜놓고 끄면 db가 죽어버리기 때문에 항상 켜둬야 함. 최초에는 데이터베이스 파일을 만들어야 해서 ~/test, 즉 내 home에 이쓴 test파일을 말한다. home 경로 : C:\Users\wu2ee 연결을 누르면 빨간 네모로 표시된 부분을 클릭하면 다시 나가진다. 이 페이지가 뜨면서 home에 test.mv.db가 만들어진다. 이후에 연결을 할때, JDBC URL에 ~/test 이렇게 파일로 접근하게 되면 어플리케이션이랑 웹콘솔이 동시에 접근이 안되고 파일이 충돌나면서 오류가날 수 있기 때문에 위 그림과 같이 접..
이번엔 회원 등록을 만들자. 우선 멤버 컨트롤러에 createForm 메서드를 만든다. 그리고 templates안에 members라는 폴더를 만들고 createMemberForm.html을 만든다. 잘 나온다. 페이지 소스 보기를 하면 우리가 작성한 html 소스코드가 렌더링 된다. html에 form으로 묶여있는데, 웹에서 spring이라고 친다면 post로 {name : spring} 으로 날아가게 된다. MemberForm 클래스를 만들고 private String name; 을 선언하면 name 에 아까 등록한 이름인 'spring'이 들어가게 된다. 이렇게 까지 하고 돌리면 회원 가입까지는 된다. 이제 회원이 가입 됬는지 목록을 만들면 'spring'이 잘 등록 됬는지 확인할 수 있다. 동작 방..
이제 멤버컨트롤러를 통해 회원을 등록하고 조회하는 걸 만들어보자. HomeController를 생성한다. home.html을 생성한다. 실행해보면 우리가 만든 home.html이 뜬다. 회원 가입을 누르면 아직 페이지를 만들지 않아서 에러뜸. 근데 우리가 예전에 Welcome Page로 localhost 8080에 접근시 index.html을 반환했는데 어떻게 저게뜨는걸까? 우선순위가 존재함. 정적 컨텐츠반환시 스프링 컨테이너에 관련 컨트롤러가 있는지 찾고 없을때 정적 컨텐츠를 반환한다. Welcome page도 마찬가지다. 지금의 경우 localhost:8080 요청이 들어왔는데 이렇게 맵핑된게 있기 때문에 바로 이 컨트롤러가 호출되고 끝나는거다. 그래서 기존의 index.html은 무시된다. 출처 :..
이번에는 @Autowired말고 하나하나 직접 스프링 빈에 등록해보자. HelloController를 제외하고 MemberService, MemberRepository의 @Service, @Repository, @Autowired를 모두 지운다. 이 상태로 실행하면 당연히 스프링이 올라올때 컴포넌트 스캔이 안되서 스프링빈에 등록되지 않는다. 따라서 hellospring 패키지에 SpringConfig 클래스를 하나만들고 @Configuration 애노테이션을 붙인다. 그 다음 memberService와 memberRepository 메서드를 만들고 @Bean 애노테이션으로 스프링 빈 등록한다. 이때 MemberService 생성자로 MemberRepository 파라미터가 필요하므로 밑에 선언한 Memb..