spring
-
JPA와 DB 설정spring/스프링 부트와 JPA 활용 강의 내용 정리 2023. 12. 13. 16:31
application.properties 를 지우고, 그 대신 application.yml 파일을 생성한다 같은 역할을 무엇으로 수행할지 선택하는 것인데, 설정이 많아질 수록 yml이 편하다고 한다 이렇게 사용을 하면 되는데... 이런 설정에 관한 내용은 어떻게 배워야 하는 걸까? Reference Doc 에 들어가면 많은 자료들이 있는데, 여기에 있는 수많은 것들을 하나하나 찾아서 사용하는 것이라 한다... 아직 뉴비인 나에겐 쉽지 않는 방법이다 여기서 show_sql은 System.out을 통해 출력하는 것이고, org.hibernate.SQL: debug 는 로그를 통해서 출력하는 것이다 때문에 show_sql은 #을 붙혀 주석처리? 한 듯 하다 운영단계에서 로그들은 System.out이 아니라, ..
-
View 환경 설정spring/스프링 부트와 JPA 활용 강의 내용 정리 2023. 12. 13. 15:35
여러 배경지식에 대한 이야기와 도움이 될 만한 공식 문서에 대한 내용이 있었다 그 내용은 강의자료를 들고 있는 것으로 충분할 것 같아 생략했다 tymleaf 를 사용하여 해당 문법으로 서버에서 랜더링 되는 값이 있다면, 그 값이 '안녕하세요 손님' 이라는 문구 대신에 들어가게 된다 위는 절대경로를 통해 hello.html 을 그대로 열었을 때의 모습이다 소스보기를 하면 코드내용을 볼 수 있다 다음은 서버를 통해 랜더링 된 화면을 보도록 하자 이렇게 서버에서 랜더링 된 값으로 대체된 모습이다 다음은 정적인 html 파일을 만들어 순수한 html 코드를 화면에 띄워보자 static 폴더에 index.html을 만들어 위의 코드를 입력했다 링크를 누르면 아래의 페이지로 이동하게 만들었다 참고로 조금씩 코드를 ..
-
프로젝트 생성spring/스프링 부트와 JPA 활용 강의 내용 정리 2023. 12. 13. 14:51
프로젝트 생성 jpashopApplication을 실행시키면 로그에 Tomcat started on port 8080 이라는 문구가 보인다 localhost:8080 에 접근했을 때 이 화면이 나오면 성공 테스트도 실행 성공 아무것도 없지만, 혹시 설정이 잘못됐을 경우를 대비하여 이렇게 테스트하는 것도 나쁘지 않다 이어서 롬복 설치와 설정이다 롬복 설치는 이미 했기 때문에, 업데이트가 있지 않은 이상 더 할 것은 없다 하지만 신기하게도 아래의 설정은 프로젝트마다 초기화 되는 모양이다 다시 설정해 주자 롬복 동작 테스트이다
-
총 정리spring/스프링 핵심 원리 강의 내용 정리 2023. 12. 12. 21:40
목차 1. 객체 지향 설계와 스프링 2. 스프링 핵심 원리 이해1 - 예제 만들기 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 4. 스프링 컨테이너와 스프링 빈 5. 싱글톤 컨테이너 6. 컴포넌트 스캔 7. 의존관계 자동 주입 8. 빈 생명주기 콜백 9. 빈 스코프 스프링 핵심 원리 - 객체 지향 설계 - 다형성, 역할과 구현의 분리 - SOLID [OCP, DIP] - DI 컨테이너 스프링 핵심 기능 - 스프링 컨테이너, 빈 - 싱글톤 - 컴포넌트 스캔 - 의존관계 자동 주입 - 빈 생명주기 콜백 - 빈 스코프 지금까지 우리는 스프링 핵심 원리와 핵심 기능에 대해서 깊이있게 학습했다 스프링이 왜 만들어졌고, 왜 필요한지, 그리고 객체 지향 설계와 스프링이 왜 땔 수 없는 관계인지 이해했다 스..
-
스코프와 프록시spring/스프링 핵심 원리 강의 내용 정리 2023. 12. 12. 21:11
이번에는 프록시 방식을 사용해보자 이전에 굳이 @Scope("request") 로 하지않고, value를 넣은 이유가 있다 이렇게 값이 두개 이상 들어가야 한다면 value를 넣어야 한다 이전에 클라이언트의 요청이 없어서 빈을 생성하지 못하여 에러가 났던 것을 기억할 것이다 현재 그 상태와 동일한 상태에서 위 처럼 프록시모드만을 추가한 상태이다 - 여기가 핵심이다. proxyMode = ScopedProxyMode.TARGET_CLASS 를 추가해주자 - 적용 대상이 인터페이스가 아닌 클래스면 TARGET_CLASS 를 선택 - 적용 대상이 인터페이스면 INTERFACES 를 선택 - 이렇게 하면 MyLogger의 가짜 프록시 클래스를 만들어두고 HTTP request와 상관 없이 가짜 프록시 클래스를 ..
-
스코프와 Providerspring/스프링 핵심 원리 강의 내용 정리 2023. 12. 12. 20:44
첫번째 해결방안은 앞서 배운 Provider를 사용하는 것이다 간단히 ObjectProvider를 사용해보자 이렇게 Provider를 사용하여 빈을 찾아올 수 있는 객체를 만들고, .getObject를 사용하여 myLogger를 입력했다 하지만 여전히 동일한 오류가 나는 모습이다 LogDemoService 에서도 동일하게 Provider 를 사용하고 다시 실행하니 성공하는 모습이다 웹 애플리케이션에도 내가 반환한 문구가 출력되고 있다 다시 로그를 살펴보자 밑에 로그가 추가됐다 객체가 생성되고, 소멸하는 것 까지도 확인했다 중요한건 [ ] 안에 있는 uuid 이다 새로고침을 반복적으로 해보자 (클라이언트 요청) 이 처럼 요청별로 고유한 uuid를 받아 객체마다 따로 관리를 해주는 모습이다 스레드를 걸어서 ..
-
request 스코프 예제 만들기spring/스프링 핵심 원리 강의 내용 정리 2023. 12. 12. 20:00
웹 환경 추가 - 웹 스코프는 웹 환경에서만 동작하므로, web 환경이 동작하도록 라이브러리를 추가하자 build.gradle에 추가 implementation 'org.springframework.boot:spring-boot-starter-web' 이제 hello.core.CoreApplicaiton 의 main 메서드를 실행하면 웹 애플리케이션이 실행되는 것을 확인할 수 있다 참고 : spring-boot-starter-web 라이브러리를 추가하면 스프링부트는 내장 톰캣 서버를 활용해서 웹 서버와 스프링을 함께 실행시킨다 참고 : 스프링부트는 웹 라이브러리가 없으면 우리가 지금까지 학습한 AnnotationConfigApplicationContext 을 기반으로 애플리케이션을 구동한다 웹 라이브러리..
-
웹 스코프spring/스프링 핵심 원리 강의 내용 정리 2023. 12. 12. 19:18
지금까지 싱글톤과 프로토타입 스코프를 학습했다 싱글톤은 스프링 컨테이너의 시작과 끝까지 함께하는 매우 긴 스코프이고, 프로토타입은 생성과 의존관계 주입, 그리고 초기화까지만 진행하는 특별한 스코프이다 이번에는 웹 스코프에 대해 알아보자 웹 스코프의 특징 - 웹 스코프는 웹 환경에서만 동작한다 - 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다 따라서 종료 메서드가 호출된다 웹 스코프의 종류 - request : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다 - session : HTTP Sesstion과 동일한 생명주기를 가지는 스코프 - application : 서블릿 컨텍스트(ServletC..