일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 징검다리
- 자바
- Algorithm
- 플로이드와샬
- Spring
- 프로그래머스
- sope
- Java
- 그래프
- bitmasking
- 가장먼노드
- 구현
- Spring이란
- 이진검색
- BinarySearch
- 전화번호 목록
- 11723
- 쇠막대기 문제
- 알고리즘
- 카카오
- 백준
- 스프링
- 이진탐색
- 토비의스프링
- Singtone
- 플로이드워셜
- 스프링프로젝트 시작하기
- 스프링이란
- 카카오인턴
- @Profile
- Today
- Total
목록정리/Spring (12)
육감적 코딩
프로퍼티 Environment가 제공하는 두 번째 기능인 프로퍼티에 대해 알아보겠습니다. 이 기능은 애플리케이션에 등록되어있는 여러가지 key-value 쌍으로 제공되는 프로퍼티에 접근 할 수 있는 기능입니다. 기본적으로 계층형으로 접근합니다. 여기서 말하는 계층형이란 우선순위가 존재 한다는 뜻입니다. 프로퍼티는 여러가지 소스가 있는데 여러가지 형태로 제공될 수 있습니다. key-value 쌍으로 OS에있는 환경변수, 자바 애플리케이션을 실행할 때 넘겨주는 전 시간에 해본 -d 옵션으로 넘겨주는 프로퍼티들 등 다양합니다. 그럼, 프로퍼티어떻게 설정하고 어떻게 접근하는가? 1. VM obtions VM options에 -D 옵션으로 넣어줄 수 있습니다. 2. properties 파일 만들기 resource..
여태까지 빈과 빈을 등록하는 방법에 대해 알아보았습니다. 다시 애플리케이션 컨텍스트로 돌아가서, 애플리케이션 컨텍스트가 가진 기능들을 구체적으로 알아보겠습니다. Environment 애플리케이션 컨텍스트는 빈팩토리 기능만 하는것은 아닙니다. 여러가지 다른 기능들을 가지고있습니다. ApplicationContext 인터페이스를 살펴보면 많은 인터페이스를 상속하고 있는걸 볼 수 있습니다. 그 중 이번에 알아볼 내용은 EnvironmentCapable 입니다 EnvironmentCapable EnnvironmentCapable은 크게 두 가지 기능으로 나누어 볼 수있습니다. 그 중 하나인 프로파일에 대해 알아보겠습니다. 프로파일 간단히 설명하면 프로파일은 환경입니다. 혹은 빈들의 그룹으로 볼 수 있습니다. 테..
모든 빈들은 스코프가 있습니다. 지금까지 정리한 내용을 살펴면, 여태까지는 모든 빈을 싱글톤 스코프의 빈만을 생성하였습니다. (아무런 설정을 하지않고 빈을 생성하면 기본적으로 싱글톤 스코프의 빈이 생성됩니다) 싱글톤 스코프란? 간단히 설명하면 애플리케이션 전반에 걸쳐서 해당 빈의 인스턴스가 오직 한 개만 존재함을 의미합니다. 그렇다면 프로토타입 스코프는 무엇을 의미할까요? 이것도 간단히 설명하면 빈을 참조할 때 마다 새로운 빈의 인스턴스를 반환하여 사용하게 됩니다. 싱글톤스코프와 프로토타입스코프를 확인 @Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext ctx; @Override publ..
9.1 자바 엔터프라이즈 플랫폼과 스프링 애플리케이션 9.1.1 클라이언트와 백엔드 시스템 가장 많이 사용되는 구조는 클라이언트가 웹 브라우저이고 백엔드 시스템이 DB인 구성이다. 간단히 ’DB를 사용하는 웹 애플리케이션’ 이라고 한다. 웹 클라이언트와 DB가 사용되지 않는 시스템은 거의 없으니, 이를 스프링이 사용되는 애플리케이션의 기본구조라고 생각할 수도 있다. 그렇다고 꼭 클라이언트는 웹 브라우저여야 하며 백엔드 시스템은 DB를 이용해야 하는 것만은 아니다. HTML을 사용하는 표준 웹 클라이언트 외에도 Flex나 X 인터넷 제품처럼 독립적으로 강력한 기능을 가진 RIA 클라이언트가 사용되기도한다. 또는 HTTP 프로토콜을 이용해 통신하는 다른 엔터프라이즈 시스템일 때도 있다. 자바 서버가 받아들일..
8장 스프링이란 무엇인가? 스프링은 기본적으로 IoC와 DI를 위한 컨테이너로서 작동하지만 그렇다고 “스프링은 단지 IoC/DI 프레임워크다” 라고는 말할 수 없다. 그렇다면 과연 스프링이란 무엇이고 어떻게 설명할 수 있을까? 8.1 스프링의 정의 스프링에 대해 가장 잘 알려진 정의는 이렇다. 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 이 정의에는 스프링의 중요한 특징이 잘 담겨 있다. 애플리케이션 프레임워크 일반적으로 라이브러리나 프레임워크는 특정 업무 분야나 한 가지 기술에 특화된 목표를 가지고 만들어진다. 하지만 스프링은 이와 다르게 ‘애플리케이션 프레임워크’라는 특징을 가지고있다. 애플리케이션 프레임 워크는 특정 계층이나, 기술, 업무에 국한되지 않고 애플리케이..
@ComponentScan - @Repository - @Service - @Controller - @Configuration @ComponentScan의 핵심설정은 크게 두 가지로 볼 수 있습니다. 스캔범위지정 스캔의 범위내에서 걸러낼 조건 먼저 스캔 범위 지정에 대해 알아보겠습니다. 1. 스캔범위지정. 먼저 basePackage() 입니다. 해당 설정은 문자열을 반환합니다. 하지만 문자열은 타입세이프 하지 않기때문에 타입세이프한 방법으로 설정할 수 있는 basePackageClasses() 라는 속성이 있습니다. 해당 설정에 값을 주면 값에 전달된 클래스 기준으로 컴포넌트 스캔을 시작합니다. 현재 애플리케이션 시작위치 즉 me.jsh.demospringioc.demospringioc.book 패키지부..
7.5 DI를 이용해 다양한 구현 방법 적용하기 7.5.1 ConcurrentHashMap을 이용한 수정 가능 SQL 레지스트리 멀티스레드 환경에서 안전하게 HashMap을 조작하려면 Collections.synchronizedMap()등을 이용해 외부에서 동기화해줘야한다. 하지만 이렇게 HashMap의 전 작업을 동기화하려면 고성능 서비스에서는 성능에 문제가 생긴다. → ConcurrentHashMap 사용이 권장된다. ConcurrentHashMap은 데이터 조작 시 전체 데이터에 대해 락을 걸지 않고 조회는 락을 아예 사용하지않는다. 7.5.2 내장형 데이터베이스를 이용한 SQL 레지스트리 만들기 ConcurrentHashMap이 멀티 스레드 환경에서 성능이 그리 나쁜편은 아니지만, 잦은 조회와 변..
매번 별 생각없이 사용했던 @Autowired 에 대해 정리해보았습니다. @Autowire를 사용하려면 주입되는 객체를 빈으로 등록해야 한다. 하나의 인터페이스를 상속한 같은 타입의 여러 클래스가 있다면 해당 타입으로 @Autowire를 사용하려면 특정 방법을 사용해야한다. 방법으로는 크게 세가지가 있다. 방법1. @Primary @Autowire로 주입받을 때, @Primary가 달린 타켓을 주입해준다 확인방법. ApplicationRunner을 implements 받아 컴포넌트로 등록하면, 실행시 해당 클래스의 run() 을 실행 시켜준다. 이를 활용하여 확인해 보자. @Component public class BookServiceRunner implements ApplicationRunner { @..