Backend

    [Spring] Bean 순환 참조

    [Spring] Bean 순환 참조

    먼저 순환 참조의 정의에 대해 알아보자. 위키 백과에서의 순환 참조 정의는 다음과 같다.- 참조하는 대상이 서로 물려 있어서 참조할 수 없게 되는 현상  위에서 설명한 순환 참조라는 것이 스프링에서도 일어날 수 있을까?: 물론이다.  두 개 이상의 자바 클래스가 서로의 Bean을 주입 받을 때 순환 참조 문제가 발생할 수 있다.  클래스 A -> 클래스 B, 클래스 B -> 클래스 C, 클래스 C -> 클래스 A 순으로 참조할 경우,클래스 A에 대한 Bean을 만들 때, 클래스 A는 클래스 B를 참조하므로, 클래스 B의 Bean을 먼저 생성하고,클래스 B는 클래스 C를 참조하기에, 클래스 C의 Bean을 먼저 생성하고, 클래스 C의 Bean을 생성하기 전에,클래스 C는 클래스 A를 생성하므로 먼저 클래스..

    npm build가 안될 때 해결 방법(node, node-sass 버전 호환 문제)

    잘 쓰고 있는 npm을 최신 버전으로 업그레이드 하라는 문구가 계속 떠서 node 20 버전을 설치했다 여기서 계속 리액트 프로젝트가 빌드가 안되는 현상이 발생.. 로그를 보니 node-sass라는 라이브러리가 window에서는 8.0 이상은 지원이 안되는 것 같다 그래서 node-sass는 7.0 버전을 설치하고 node는 17버전으로 다운그레이드 했더니 빌드가 잘됐다 node-sass는 node 환경에서 sass -> css 코드로 변환해주는 스타일 전처리기라고 한다. 아무튼 그렇다 https://www.npmjs.com/package/node-sass node-sass Wrapper around libsass. Latest version: 9.0.0, last published: 8 months a..

    스프링에서 로그 찍는 법

    스프링에서 로그 찍는 법은 총 두 가지가 있다. Log4j or Logback 와 같은 로깅 프레임워크를 이용하거나 System.out.println() 을 이용하여 로그를 찍을 수 있다. 1. 로깅 프레임워크 이용하기(Log4j) 이클립스에서 스프링 레거시 프로젝트를 생성할 경우, 자동으로 src/main/resources 경로에 log4j.xml 파일이 생성된다. log4j.xml 파일 내용은 아래와 같다. : XML 버전 및 인코딩 정보 : log4j.dtd 파일 위치 지정 : log4j 설정 정보가 포함된 XML 파일 : appender - 로그를 출력할 대상 및 출력 방식 ㄴ ConsoleAppender - 콘솔에다가 로그 출력 : 출력 대상 지정. value가 System.out이므로 콘솔 출..

    데이터 전송 어노테이션 - @PathVariable, @ResponseBody, @RequestParam

    @PathVariable - 한번에 하나의 요청만 가능 - value : 파라미터 값 - 템플릿 변수를 이용하여 값을 받을 수 있음 ex) "/admin/700"으로 주소를 보냈을 경우, 컨트롤러에서 매핑이 "/admin/{size}"이고 (@PathVariable(value="size") int size) 라고 지정하면 size라는 매개변수는 700이라는 값을 가지게 된다. @RequestParam - defaultValue : 기본값 지정(전달받은 값이 없을때 사용) - name : 파라미터 이름 - value : 파라미터 값 - required : true일 경우, 필수값(값이 안 넘어올 경우, 에러 발생) : false일 경우(기본 설정), 필수값 아님 @RequestBody - @RequestB..

    리스트 관련 메서드

    append() - 리스트에 원소를 하나 삽입할 때 사용 - 시간 복잡도 : O(1) sort() - 리스트를 오름차순으로 정렬 - 내림차순으로 정렬할려면 sort(reverse = True) - 시간 복잡도 : O(NlogN) reverse() - 리스트 안에 있는 모든 원소들의 순서를 뒤집는다 - 시간 복잡도 : O(N) insert() insert(삽입할 인덱스 번호, 삽입할 값) - 해당 인덱스에 원소 삽입시 사용 - 시간 복잡도 : O(N) count() count(특정 값) - 리스트 안에서 특정 값을 가지고 있는 데이터의 갯수 카운트 - 시간 복잡도 : O(N) remove() remove(특정 값) - 리스트 안에서 특정 값 갖는 원소 제거 (특정 값 가진 원소가 여러개일 경우, 하나만 제..

    스프링 XML 정리 - 컨테이너(applicationContext)

    태그 - 객체 생성 태그 ex) - id : 객체 이름, 식별자 - class : 객체를 생성할 클래스 태그 - 생성자 의존 주입 ex) 태그 - 메소드 의존 주입 ex) - 이미 등록된 빈에만 어노테이션 활성화 - @Autowired, @Qualifier만 해결 가능 - xml에 bean을 반드시 선언 - 빈의 등록 여부와 관계 없음. - 스프링이 빈 스캔을 하여 어노테이션 활성화 - 모든 클래스를 스캔하고 빈 작성 (@Autowired, @Qualifier 뿐만 아니라 @Component, @Controller, @Service, @Repository) - base-package를 통해 스프링이 스캔할 패키지 위치를 지정 필요 둘의 공통점 - 의존성 주입(DI) - 스프링 IoC의 중요한 개념 - 의..

    스프링 어노테이션 정리 - AOP 구현, 시점 기반

    AOP 구현 어노테이션 @Aspect - AOP구현(Aspect Oriented Programming) - 관점 지향 프로그래밍 - 공통으로 적용할 기능을 구현 - XML 설정에서 인식할 수 있도록 태그 필요 시점 기반 어노테이션 @Before - Test 메소드가 실행되기전 항상 실행 @AfterReturning - 메소드가 에러 없이 성공적으로 실행된 이후의 시점 @AfterThrowing - 메소드가 에러 발생해 예외를 던지는 시점 @After - Test 메소드가 실행된 후 항상 실행 (try catch문에 finally 구문과 흡사) @Around - 메소드의 시작부터 끝까지 전반적인 시점 @PostConstruct - 생성자 호출 후 바로 다음에 호출 - 의존성 주입 후 초기화를 수행하는 메서..