스프링 컨테이너 스프링은 스프링 컨테이너에 있는 객체를 관리한다. 스프링 컨테이너에 속한 객체를 빈(Bean) 객체라 하는데 스프링은 빈으로 등록된 모든 객체를 스프링 컨테이너에 생성하고 의존성을 주입한다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 스프링 컨테이너(ApplicationContext) 객체를 생성해 스프링 컨테이너를 생성한다. 이때 생성자로 스프링 설정 정보를 전달한다. 어노테이션 기반의 자바 설정 클래스 또는 XML 등 다양한 형식의 설정 정보를 넘겨줄 수 있다. ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 2. 스프링 빈 등록, 의존 주입 전달받은 설정 정보를 기반으로 스프링..
패키지(Package) 리눅스에서 패키지란 리눅스 시스템에서 프로그램을 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음이다. 패키지 종류로는 소스 패키지(Source Package)와 바이너리 패키지(Binary Package)가 있다. 소스 패키지는 소스 코드가 들어있는 패키지로, 소스 코드를 사용자가 직접 컴파일 해 바이너리 파일로 만들어야 실행할 수 있다. 직접 컴파일해야 한다는 번거로움이 있지만, 원하는 대로 소스 코드를 수정할 수 있으며 자신의 환경에 맞춰 컴파일 할 수 있다. 반면에 바이너리 패키지는 이미 컴파일이 되어 있어 바로 설치할 수 있으며, 설치 시간도 짧고 설치 시 오류가 발생할 가능성이 적다. 따라서 리눅스의 기본 설치 패키지들은 대부..
스프링 입문을 위한 자바 객체 지향의 원리와 이해라는 책에서 스프링의 핵심은 스프링 삼각형이라 나온다. 여기서 스프링 삼각형이란 POJO를 기반으로 한 IoC/DI, AOP, PSA라는 3가지 프로그래밍 모델을 뜻한다. DI (의존성 주입) 객체는 다른 객체와 의존 관계를 맺을 수 있다. 예를 들어 A와 B객체가 있다고 해보자 A객체가 변할 때 B객체에도 영향을 미친다면 B객체는 A객체에 의존하고 있으며 둘은 의존 관계이다. 그리고 객체가 다른 객체에 의존할 때 즉 의존성을 가지고 있을 때 외부에서 의존성을 주입하는 것이 의존성 주입(Dependency Injection)이다. 아래 두 코드를 비교해보자. public class Car { Tire tire; public Car() { tire = new..
일반 사용자 계정에서 작업을 하다가 루트(root)의 권한이 필요할때가 있다. 이럴 때 사용하는 명령어가 su와 sudo이다. su (Switch User) su 명령어는 현재 계정을 로그아웃 하지 않고 다른 계정으로 전환하는 명령어로 유저 계정에서 루트 계정으로 전환하여 루트 계정의 권한을 얻는 방식이다. su 루트 사용자로 변경 su user01 user01 사용자로 변경 su - user01 사용자로 변경하면서 환경변수까지도 변경 whoami 현재 사용자 확인 명령어 logout(exit) 이전 계정으로 돌아오는 명령어 sudo (SuperUser Do) sudo 명령어는 일반 사용자 계정에서 특정 명령어를 루트의 권한으로 실행하는 명령어이다. 쉽게 말해 루트의 권한을 빌려 특정 명령어를 수행한다...
우분투 디렉터리 우분투의 디렉터리들은 저장되는 파일의 유형에 따라 나뉘어져 있다. / 루트 디렉터리(최상위 디렉터리) /root root 사용자의 홈 디렉터리, 다른 사용자들은 접근할 수 없다. /bin 기본 명령어들이 들어있다. cp, ls, mv, vi 등 /sbin 시스템 관리용 명령어들이 들어있다. reboot, shutdown, fdisk 등 /etc 시스템 환경 설정과 관련된 파일이 들어있다. /home 일반 사용자의 홈 디렉터리 /usr 모든 응용 프로그램 및 시스템 파일이 들어있다. /lib 프로그램의 라이브러리가 들어있다. /dev 장치 파일이 들어있다. /boot 부팅 커널이 들어있다. /var 각종 로그, 캐시 파일 등이 들어있다. /tmp 임시파일이 저장된다. /media 외부 장치..
Regex (정규식) 전체 문자열 또는 문자열의 substring이 어떤 패턴 또는 규칙을 만족하는지 알고싶을때 Regex (정규식)을 사용한다. Regex는 문자열의 패턴을 나타내는 언어이다. Regex 기호 아래의 사이트에 잘 정리되어 있다. 왼쪽 메뉴의 CheatsSheet를 보고 실습하면서 기호를 파악하고 자세한 내용은 RegEx Reference를 참고하자. https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com JAVA에서 사용 String 객체의 matches 메서드는 모든 문..
렌더링 렌더링이란 브라우저가 웹 문서를 화면에 그리는 과정을 말한다. 클라이언트가 URI를 통해 서버로부터 HTML을 비롯한 리소스를 다운로드 받으면 브라우저는 웹 문서를 화면에 그리기 위해 렌더링을 수행한다. 브라우저마다 렌더링을 수행하는 렌더링 엔진과 자바스크립트 코드를 실행하는 자바스크립트 엔진이 존재한다. 렌더링 과정 1. DOM 트리, CSSOM 트리 생성 클라이언트가 리소스를 다운로드 받으면 브라우저는 렌더링을 위해 먼저 HTML 코드로부터 DOM 트리, CSS로부터 CSSOM 트리를 생성한다. DOM 트리 생성 CSSOM 트리 생성 2. 렌더링 트리 생성 DOM 트리와 CSSOM 트리를 만든 후, 이 둘을 결합해서 렌더링 트리를 생성한다. 렌더링 트리에는 페이지를 렌더링 하는데 필요한 노드만..
WEB 웹의 가장 기본적인 기술은 HTTP, URI, HTML이다. HTTP : 웹의 자원(리소스)을 교환하기 위한 프로토콜 HTML : 웹 페이지 포맷 URI : 웹의 리소스를 가리키는 식별자 웹을 정보 시스템으로 본다면 하이퍼미디어 시스템, 분산 시스템이라는 두 가지 측면으로 볼 수 있다. 하이퍼미디어 시스템 : 하이퍼미디어란 텍스트, 이미지, 영상 등 다양한 미디어를 하이퍼링크(링크)로 연결해 구성한 시스템이다. 웹 페이지에는 다른 웹 페이지와 이미지, 동영상의 링크가 포함된다. 사용자는 브라우저를 통해 그 링크로 계속 이동하여 정보를 얻을 수 있다. 분산 시스템 : 웹의 자원은 한 곳에 모여있지 않고 전 세계에 퍼져있다. 즉 웹은 수 많은 서버로 구축된 분산 시스템이다. REST의 등장 2000년..