일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링
- springdatajpa
- 백준
- http
- SpringBoot
- 자바
- Servlet
- Greedy
- Thymeleaf
- Android
- spring
- JPQL
- kotlin
- 스프링 핵심 기능
- 알고리즘
- java
- Exception
- 김영한
- 스프링 핵심 원리
- pointcut
- transaction
- Proxy
- AOP
- Spring Boot
- QueryDSL
- JDBC
- jpa
- db
- 그리디
- 인프런
- Today
- Total
목록김영한 (39)
개발자되기 프로젝트
1. application.yml, 설정하기 datasource 설정 datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa driver-class-name: org.h2.Driver --> datasource의 url을 명확하게 h2 콘솔에서 접근하는 url과 동일하게 입력해주자. --> url이 달라서 H2와 연결이 되지 않아 ApplicationContext load fail 발생 jpa 설정 jpa: hibernate: ddl-auto: create Properties: hibernate: show_sql: true format_sql: true - ddl-auto : table 자동 생성 여부 - ddl-auto : create --> ..
1. Thymleaf 사용 template 엔진으로 Thymleaf를 사용 template 엔진? 템플릿과 자료를 합성하여 사용자가 볼 수 있도록 렌더링 해줌 2. Controller 간단한 controller를 구성 @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!"); return "hello"; // 화면이름, html 파일명, resource의 templates하위. } } Model?? - model에 data를 실어서 Controller를 통해 view로 넘길 수 있음 - 생성된 data를 view로 보낼 때..
1. 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 TCP는 IP위에 얹어져서 보완하는 기능. 2. 프로토콜 계층 3. 패킷 4. TCP/IP 패킷 정보 5. TCP 의 특징 : ip로만 해결되지 않던 문제 보완함. 전송 제어 프로토콜(Transmission Control Protocol) 연결지향 - TCP 3 way handshake(가상 연결) --> 연결을 하고! 메세지 보냄. 데이터 전달 보증 : 패킷 누락되면 알 수 있음. 순서 보장 신뢰할 수 있는 프로토콜 현재는 대부분 TCP 사용 6. 연결지향, TCP 3way handshake - 메세지 세 번 주고받음. SYN : 접속 요청 메세지 AC..
1. proxyMode @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger { private String uuid; private String requestURL; proxyMode = ScopedProxyMode.TARGET_CLASS를 추가. - 적용 대상이 class? --> TARGET_CLASS - 적용 대상이 interface? --> INTERFACE MyLogger를 상속받는 가짜 프록시 객체를 빈으로 등록함. 그럼 mylogger의 클래스를 확인해보자 System.out.println("myLogger = " + myLogger.getClass()); Requ..
웹 환경에서만 동작한다 웹 스코프는 스프링이 해당 스코프 종료 시점까지 관리해줌. 종료 메서드 호출 1.웹 스코프 종류 requset : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청 마다 별도의 빈 인스턴스 생성되고, 관리된다! session : HTTP session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트(serveltContext)와 동일한 생명주기 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 2. Request 스코프 각 HTTP 요청에서만 사용되는 bean을 나타냄? 즉 client에 따라 전용 bean이 생성됨. client에 의해 요청이 들어오면 해당 클라이언트 전용 빈을 생성하고 스프..
싱글톤 빈과 프로토 빈 함께 사용 시 발생하는 문제점 해결해보자. 이 전 글에서 생긴 문제점은 다음과 같다. 프로토 타입 빈은 요청할 때 마다 새로 생성하고 싶다. 하지만 싱글톤 빈 생성시 프로토타입이 주입이된다. 따라서 싱글톤 빈 내부의 프로토타입은 새로 생성되지 않는다. 왜냐 싱글톤 빈에서 스프링 컨테이너에 프로토타입 빈을 더이상 요청하지 않기 때문. 해결하기 위해서는 싱글톤 빈에서 applicationContext를 주입 받고 매번 요청하면 해결 가능.. 이처럼 의존관계를 직접 찾는 것을 dependency loockup (DL)이라 함. 흠.. 근데 applicationContext를 주입받아서 사용하는거는 좀... 이 문제는 해결하기 위해서는 딱 DL기능 만 제공하는 기능이 필요 1. Objec..
프로토타입 빈은 스프링 컨테이너에 요청할 때 마다 새로운 인스턴스 생성하여 반환함. 그런데 싱글톤 빈과 같이 사용하면 의도치 않은 동작을 한다. 1. 프로토타입 빈 직접 요청 어떤 protoType Bean이 있다고 하자. 해당 클래스에는 addCound method를 제공한다. 만약 A client가 prototypeBean을 요청하고 prototypeBean1이라는 이름으로 받으려고 한다. 스프링 컨테이너는 인스턴스를 새로 생성해서 반환한다(prototypeBean1, @x01) 그리고 client A는 addcount를 실행한다.ㄷ protypeBean.getCount를 하면 1이 리턴된다. 이 때 Client B도 prototypeBean을 요청하고 prototypeBean2라는 이름으로 받으려고..
1. 빈 스코프?? 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어, 스프링 컨테이너가 종료될 때 까지 유지된다. 이것은 스프링 빈이 싱글톤 "스코프"로 생성되기 때문이다. 스코프는 빈이 존재할 수 있는 범위를 의미함 2. 스코프 종류? 싱글톤 : 기본 스코프, 스플이 컨테이너의 시작~종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존 관계 주입까지만 관여하고, 더는 관리하지 않는 매우 짧은 범위의 스코프, 초기화 까지 해줌. -->종료메서드 호출 안됨. 웹 관련 스코프 - request : 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프 - session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 - application : 웹의 서..