전체 글
-
[오류 기록] Custom WebSecurityConfigurerAdapter가 적용되지 않음Spring 2022. 6. 26. 07:32
문제 WebSecurityConfigurerAdapter을 상속받은 SecurityConfig 클래스에서 configure 메서드를 오버라이딩하여 인증을 선택적으로 적용하였다. "/" 은 permitAll을 적용한 url중 하나인데 /페이지에 접속하면 인증을 요구하였다. 원인 SecurityConfig 클래스가 포함된 oauth2 패키지가 @SpringBootApplication을 포함하고 있는 DeveloperCommunityApplication.kt 파일을 포함하는 프로젝트 패키지에 포함되어 있지 않았다. 따라서 ComponentScan의 적용 대상이 되지 않았다. 시도한 해결방법 oauth2 패키지를 developercommunity 패키지(프로젝트 패키지) 하위로 옮겼다. (애초에 왜 밖에다 만들..
-
CPU와 메모리CS - Operating System 2022. 5. 24. 16:48
CPU CPU의 기본 구성 산술논리 연산장치 ALU(Arithmetic and Logic Unit) : 데이터의 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈 등)과 논리연산(AND, OR 등) 수행한다. 제어장치 control unit : CPU에서 작업을 지시하는 부분 레지스터 register : CPU내의 데이터를 임시로 보관하는 곳 레지스터의 종류 가시 레지스터 user-visible register : 사용자 프로그램에 의해 변경된다. 데이터 레지스터 data register (일반 레지스터, 범용 레지스터) : 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다. 주소 레지스터 address register : 데이터 또는 명령어가 저장된 메모리의 주소가 저장된느 곳이다. 특수 레지스터 프로그램 카..
-
컴퓨터의 기본 구성 - 하드웨어 구성CS - Operating System 2022. 5. 24. 15:12
하드웨어 구성 필수 장치 중앙처리장치(CPU) 메인메모리(제1저장장치, first storage) 주변장치 입력장치 출력장치 저장장치(제2저장장치, second storage) CPU와 메모리 CPU : 명령어를 해석하여 실행하는 장치. 메모리 : 작업에 필요한 프로그램과 데이터를 저장하는 장소. 입출력장치 입력장치 : 외부의 데이터를 컴퓨터에 입력하는 장치 ex) 키보드, 마우스, 스캐너 출력장치 : 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치 ex) 프린터, 모니터, 스피커 등 저장장치 자성을 이용하는 장치 : 카세트테이프, 플로피디스크, 하드디스크 등 레이저를 이용하는 장치 : CD, DVD, 블루레이디스크 등 메모리를 이용하는 장치 : USB, SD 카드, CF 카드, SSD 등..
-
[Spring][Kotlin] 빈 스코프Spring 2022. 5. 21. 15:44
빈 스코프란? 빈 스코프는 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다양한 스코프를 지원한다. 싱글톤 : 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 빈 스코프는 다음과 같이 지정 가능하다 [컴포넌트 스캔 자동 등록] @Scope("prototype") @Component class HelloBean{...} [수동..
-
[Spring][Kotlin] 빈 생명주기 콜백Spring 2022. 5. 21. 14:18
빈 생명주기 콜백 시작 빈 생명주기 콜백은 빈이 생성될 때와 소멸하기 직전에 안전하게 처리될 수 있도록 호출하는 콜백이다. DB 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화 + 종료 작업이 필요하다 서버 뜰 때 애플리케이션이랑 DB를 미리 10~100개정도 연결해놓는다. 고객 요청이 올 때 연결해놓을 걸 재활용할 수 있다. 스프링 빈은 간단하게 다음과 같은 lifeCycle을 가진다 객체 생성 -> 의존관계 주입 (예외 : 생성자 주입) 스프링 빈은 객체 생성 후 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다 -> 스프링은 의존관계 주입이 완료되면 스..
-
[Spring][Kotlin]의존관계 자동 주입Spring 2022. 5. 21. 13:26
다양한 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 : 생성자를 통해서 의존관계를 주입받는 방법이다. [특징] 생성자 호출 시점에 딱 한번만 호출되는 것이 보장 -> 그때 값 세팅하고 그 후 세팅 못하게 막기 가능하다 불변, 필수 의존관계에 사용 생성자가 딱 하나 있다면 @Autowired 생략 가능하다. (스프링 빈인 경우) @Component class OrderServiceImpl: OrderService{ val memberRepository: MemberRepository val discountPolicy: DiscountPolicy @Autowired constructor(memberRepository: MemberRepository..
-
[Spring][Kotlin]컴포넌트 스캔Spring 2022. 5. 19. 00:44
컴포넌트 스캔과 의존관계 자동 주입 스프링은 설정 정보 없이도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. + 의존관계 자동으로 주입하는 @Autowired 기능도 제공한다. 컴포넌트 스캔 @ComponentScan을 설정정보에 붙여주면 된다. 컴포넌트 스캔은 @Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. Autowired 의존관계 자동 주입 이전에는 설정정보 클래스에서 @Bean으로 직접 설정 정보를 작성했고 의존관계도 명시했다. 하지만 컴포넌트 스캔을 사용하면 이런 설정 정보 자체가 없기 때문에 의존관계 주입도 @Autowired를 통해서 해주어야한다. @Autowired를 사용하면 생성자에서 여러 의존관계도 한번에 주입받을 수 있다. @Aut..
-
[Spring][Kotlin] 싱글톤 컨테이너Spring 2022. 5. 18. 19:19
스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 그리고 대부분 스프링 애플리케이션은 웹 애플리케이션이다. 웹앱은 보통 여러 고객이 동시에 요청한다. Problem] Request 마다 객체 생성하면 메모리 낭비가 매우 심하다. Sol) 해당 객체를 1개만 생성하고 공유하도록 하면 된다. (사실 요즘 GC가 좋아서 초당 100최 정도는 괜찮지만 효율적이면 좋으니까) 싱글톤 패턴 : 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. -> 객체 인스턴스가 2개 이상 생성 못하도록 막야야 한다. 싱글톤 구현 방법은 많다. 그 중 하나의 방법은 private 생성자를 사용해서 생성자를 사용하지 못하도록 막는 것이다. Kotlin에서는 object 키워드를 붙이면 싱글톤 클래스 ..