일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mock server
- self
- 프로그래머스
- Django
- 행렬곱
- 클래스
- PYTHON
- EC2
- 람다함수
- 파이썬
- 파이써닉코드
- 컴프리헨션
- todo project
- 함수
- 집계함수
- spring boot
- Jar배포
- sqlalchemy
- cerbot
- numpy
- 코딩테스트
- 토이프로젝트
- RDS
- API
- yaml
- 조건연산
- Comprehension
- 프리온보딩
- 백엔드 인턴십
- Postman
- Today
- Total
목록Spring (6)
build my life

프록시 방식 사용해서 코드를 조금 더 줄여보자 1. roxyMode => TARGET_CLASS 설정 2. 오류 났던 부분 원복 3. 오류나지 않고 서버가 시작된다. 이게 어떻게 동작하는거지? 바이트 코드를 조작하는 라이브러리를 사용해서 MyLogger를 상속받은 가짜 프록시 객체를 생성 그리고 스프링 컨테이너에 진짜 대신 가짜 프록시 객체를 등록 getBean("myLogger", MyLogger.class)로 조회해도 프록시 객체가 조회되는 것을 확인 => 의존 관계 주입도 가짜 프록시 객체가 주입됨 가짜 프록시 객체는 요청이 오면 그제서야 진짜 빈을 요청하는 위임 로직이 들어있음! 이런 가짜 프록시 객체는 원본 클래스를 상속 받아서 만들어졌기 때문에 진짜와 동일하게 사용할 수 있음! 꼭 기억하자 1..

웹 스코프는 웹 환경에서만 동작 프로토 타입과 다르게 스프링이 해당 스코프의 종료 시점까지 관리 -> 종료 메서드가 호출 웹 스코프 종류 1. request - HTTP 요청 하나가 들어오고 나갈 때 유지되는 스코프 - 각 요청마다 별도의 빈 인스턴스가 생성 관리 2. session - HTTP session과 동일한 생명 주기를 가지고 있음 3. application - 서블릿 컨텍스트와 동일한 생명주기 4. websocket - 웹 소켓과 동일한 생명주기 웹 라이브러리 추가 -> build.gradle // 웹 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-web' request 스코프 - 동시에 여러 HTTP 요청이 오면..

@Autowired 의존 객체 타입에 해당하는 스프링 빈 자동 주입 어노테이션 주입할 대상이 없을 경우 오류 발생 @Autowired(required = false) // 주입할 대상이 없을 경우 동작 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법 불변이면서 필수인 상황에서 사용 생성자가 하나일 경우에는 @Autowired 생략 가능 객체를 생성할 때 딱 1번만 호출 되므로 이후 호출될 일이 없음, 불변하게 설계 가능 수정자 주입(setter 주입) 선택적이거나 변경 가능 상황에서 사용 setXxx 메서드를 public으로 열어두어야 함 => 누군가가 호출해서 실수로 변경할 수 있다는 단점이 있음 자바빈 프로퍼티 객체지향 언어인 자바에서 객체는 고유한 속성(특징)을 가지는데, 그 속성을 칭하는..

스프링 컨테이너 생성 ApplicationContext = 스프링 컨테이너 = 인터페이스 xml로 만들 수 있고 어노테이션 기반 자바 설정 클래스(ex.AppConfig)로 만들 수 있음 // 스프링 컨테이너 생성 ApplicationContext ac = new AnnotationConfigApplicationContext(ExConfig.class); 여기서 ExConfig.class가 스프링 컨테이너를 구성하는 구성 정보 파라미터로 넘어온 구성 클래스 정보를 사용해서 스프링 빈 등록 빈 이름은 직접 등록해서 사용할 수 있음(Default : 메서드이름) 빈 이름은 항상 다른 이름을 부여해야함 예시 AppConfig @Configuration public class AppConfig { @Bean p..
❗기존 구현 코드에는 인터페이스를 의존하는 것 뿐 아닌 구현체 클래스에도 의존하는 문제점이 있음 public class OrderServiceImpl implements OrderService { // 인터페이스 뿐만 아니라 구현체도 의존하게 됨 private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); OrderServiceImple -> DiscountPolicy 뿐 아니라 FixDiscountPolicy or RateDiscountPolicy도 의존 ✅ 인터페이스만 의존할 수 있도록 코드 수정 public..