일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JAVA SPRING
- programmers
- php 프로그래밍 입문 솔루션
- php 프로그래밍 입문 연습문제
- php 프로그래밍 입문 3판
- 자바
- 스프링
- 최단 경로
- 배열
- php 프로그래밍 입문
- 페이코 친구코드
- SWEA
- 자바 스프링
- php 프로그래밍 입문 문제풀이
- C
- php 프로그래밍 입문 예제
- 페이코 추천인
- Flutter
- C언어
- 한정 분기
- Java
- spring
- php
- 파이썬
- 백준
- 플러터
- 페이코 초대코드
- 플러터 개발환경 설정
- 페이코 추천인코드
- php 프로그래밍
- Today
- Total
목록Java Spring (96)
ImJay
intelliJ 자동 완성을 사용하다보면 빠르게 단축키를 누르다가 실수를 하는 경우가 종종 있다. 나도 평소처럼 스터디를 하다가 갑자기 잘 사용해오던 org.junit.jupiter.api.Test 가 자동완성 탭에서 사라졌다. 직접 경로를 타이핑하니까 또 주입은 되는데, 자동완성에서만 안뜨고.. ide 에서 내가 무언가 잘못 건드린게 있는 것 같았다. 원인은 다음과 같았다. 자동완성을 수행할 때 Ctrl + Enter 를 입력하면 다음과 같이 "코드완성에서 제외" 옵션이 나온다.. 생각 없이 자동완성 단축키를 누르다 해당 옵션까지 눌러버린 것이다 ㅠㅠ 해결 방법은 다음과 같다. 설정 > 에디터 > 일반 > 자동 가져오기 > 자동 가져오기 및 코드 완성에서 제외 옵션 에서 해당 패키지 제외 취소 정상적으..
[Java Spring] 2-55. 빈 스코프란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다 고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때 ..
[Java Spring] 2-54. 애노테이션 @PostConstruct, @PreDestroy 우선 코드 먼저 보고 설명하겠다. package hello.core.lifecycle; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); } public void setUrl(String url) { this.url = url; } //서비스 시작시 호출 public void connect() { System.o..
[Java Spring] 2-53. 빈 등록 초기화, 소멸 메서드 지정 설정 정보에 @Bean(initMethod = "init", destroyMethod = "close") 처럼 초기화, 소멸 메서드를 지정할 수 있다. 설정 정보를 사용하도록 변경 package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); } public void setUrl(String url) { this.url = url; } //서비스 시작시 호출 public void connect() { System.out.println(..
[Java Spring] 2-52. 인터페이스 InitializingBean, DisposableBean 코드를 바로 보자 package hello.core.lifecycle; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; public class NetworkClient implements InitializingBean, DisposableBean { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); } public void setUrl(..
[Java Spring] 2-51. 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보자. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보자. 실제로 네트워크에 연결하는 것은 아니 고, 단순히 문자만 출력하도록 했다. 이 NetworkClient 는 애플리케이션 시작 시점에 connect() 를 호출해서 연 결을 맺어두어야 하고, 애플리케이션이 종료되면 disConnect() 를 호출해서 연결을 끊어야 한다. 예제 ..
컨트롤러로부터 받아온 값을 프로젝트 내의 어떤 클래스든 사용하려면, 값을 저장하는 방법은 다양합니다. 이에 대한 예시를 몇 가지 들어보겠습니다. 1. 변수에 저장하기 public class MyController { public void handleRequest(String data) { // 데이터를 변수에 저장 String myData = data; // 다른 클래스에서 변수 사용 MyService myService = new MyService(); myService.processData(myData); } } public class MyService { public void processData(String data) { // 변수 사용 System.out.println("Data received:..
[Java Spring] 2-50. 자동, 수동의 올바른 실무 운영 기준 편리한 자동 기능을 기본으로 사용하자 그러면 어떤 경우에 컴포넌트 스캔과 자동 주입을 사용하고, 어떤 경우에 설정 정보를 통해서 수동으로 빈을 등록하고, 의존관계도 수동으로 주입해야 할까? 결론부터 이야기하면, 스프링이 나오고 시간이 갈 수록 점점 자동을 선호하는 추세다. 스프링은 @Component 뿐만 아니라 @Controller , @Service , @Repository 처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 거기에 더해서 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동으로 등록하도록 설계했다. 설정 정보를 기반으로 ..
[Java Spring] 2-49. 조회한 빈이 모두 필요할 때, List, Map 의도적으로 정말 해당 타입의 스프링 빈이 다 필요한 경우도 있다. 예를 들어서 할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해보자. 스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다. 코드로 바로 설명하겠다. package hello.core.autowired; import hello.core.AutoAppConfig; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import org.assertj.cor..
[Java Spring] 2-48. 애노테이션 직접 만들기 @Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일시 타입 체크가 안된다. 다음과 같은 애노테이션을 만들어서 문제를 해결할 수 있다. package hello.core.annotataion; import org.springframework.beans.factory.annotation.Qualifier; import java.lang.annotation.*; @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolic..