스위치란? -OSI 모델에서 2계층 데이터 링크 계층에서 동작하는 장비입니다. 이는 자신의 여러 포트로 여러 디바이스를 연결하고 연결된 디바이스가 보낸 패킷을 받아 다른 디바이스로 전달하는 역할을합니다. 보통 내부망에서 MAC주소를 활용해 내부망 통신을 할때 주로 쓰입니다. 스위치 내부에 있는 MAC주소 테이블을 통해 MAC통신을 지원합니다. 허브와의 차이점 - 서로 포트로 연결된 디바이스끼리 통신을 지원한다는 점이 공통점이나, 허브는 전달할때 무조건 브로드캐스트 방식만 하는것에 비해 스위치는 목적지 포트로만 패킷을 보낸다라는 차이점이있습니다. MAC주소 테이블 스위치 내부에 저장되어있습니다. 스위치의 포트 번호와 해당 포트에 연결되어있는 장치의 MAC주소가 등록되어있는 구조입니다. MAC주소는 일정시간..
게이트웨이란? -한 네트워크에서 다른 네트워크로 데이터를 전송하는 역할을 하는 장치입니다. 게이트웨이는 보통 사설 IP에서 1번지에 주로 할당되며, 자신의 사설 IP와 공인IP를 변환하며 외부의 네트워크와 통신을 할 수 있도록 하는 역할을 합니다. 즉, 쉽게 말해서 자신의 네트워크의 출입문이라고 생각하시면 됩니다. 게이트웨이의 ip주소 -보통 게이트웨이의 IP주소는 라우터의 IP주소가 됩니다. 이를 통해 내부 네트워크와 외부 네트워크 간의 중개역할을 진행할 수 있고, 해당 라우터는 여러개의 네트워크 인터페이스를 가지고 있어 여러개의 IP주소를 가질 수 있습니다. 보통은 각 사설망의 1번지에 할당이 됩니다. 위의 그림을 보시면 192.168.1.10 컴퓨터에서 192.168.2.10컴퓨터에게 데이터를 전송..
라이프사이클이란? -우리말로 해석하면 생명주기입니다. 사람이 태어나서 성장하고 활동하다가, 마지막으로 소멸되듯이, 마찬가지로 빈도 생성되어 초기화되어 사용된 후 소멸됩니다. 이처럼 빈이 생성되고 소멸되기까지의 과정을 라이프사이클이라고 합니다. 빈의 생명주기에서 빈 초기화와 빈 소멸만 직접 구현할 수 있습니다. 빈의 라이프사이클 빈 생성 - 스프링 컨테이너에 빈을 생성합니다. 이 단계에서는 빈의 인스턴스를 생성하는 작업이 수행됩니다. 이때 빈 객체의 생성자를 통해 객체가 생성됩니다. 의존성 주입 -생성된 빈에 필요한 의존성을 주입합니다. 이 단계에서는 @Autowired 어노테이션을 사용해 필드, 생성자, 메서드를 통해 의존성을 주입하는 작업이 수행됩니다. 초기화 -의존성 주입을 한후 빈을 초기화합니다. ..
@Autowired란? -스프링에서 자동으로 의존성을 주입하기 위해사용되는 어노테이션입니다. 생성자, 필드, 메서드 주입 3가지 방법으로 주입을 할 수 있습니다. 생성자 주입 @Component public class MyComponent { private MyDependency myDependency; @Autowired public MyComponent(MyDependency myDependency) { this.myDependency = myDependency; } // ... } 메서드 주입 @Component public class MyComponent { private MyDependency myDependency; @Autowired public void setMyDependency(MyDe..
빈 이름 @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } } -@Bean 애노테이션으로 빈을 등록할때, 해당 애노테이션이 붙은 메서드의 이름이 "myBean"이라면, 해당 빈의 이름은 "myBean"이 됩니다. @Component public class MyBean { // ... } -@Component 애노테이션으로 빈을 등록할때, 해당 애노테이션이 붙은 클래스의 이름이 "MyBean"이라면, 해당 빈의 이름은 클래스 이름의 첫글자를 소문자로 변환한 "myBean"이 됩니다. 빈 이름 충돌 -빈 이름 충돌은 동일한 이름으로 두개 이상의 빈이 등록되는 경우를 말하며, 이로인해 스프링 ..
컴포넌트 스캔이란? -스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능입니다. 직접 수동으로 빈을 등록하지않아도, 코드에 컴포넌트라고 표시만 해주면 스프링이 컴포넌트로 지정된 부분을 찾아서 자동으로 빈으로 등록을 해주는 기능입니다. 컴포넌트 스캔 과정 스캔 대상 패키지 지정 - 컴포넌트 스캔을 수행할 패키지를 지정하여 스프링이 스캔을 해야하는 패키지를 지정합니다. @ComponentScan 애노테이션을 통해 스캔 대상 패키지를 지정할 수 있습니다. 클래스 탐색 -지정된 패키지 내부에 있는 클래스들을 탐색합니다. 전체 클래스를 탐색하며, 컴포넌트로 지정된 클래스들만 찾아서 스캔합니다. 어노테이션 탐색 -클래스들을 스캔하면서 컴포넌트만 찾기위해 @Component 어노테이션을 찾습니다. 해당 어노테이션..
웹 서버(Web Server)란? -클라이언트로부터 HTTP 요청을 받고, 정적인 웹 콘텐츠를 제공하는 것으로, 주로 HTML파일을 처리합니다. 즉, 클라이언트로 부터 요청을 받아들여 해당 결과만 응답 해주는 역할로 정적인 페이지 처리를 담당 합니다. 대표적인 예시로는 아파치(Apache)가 있습니다. 웹 애플리케이션 서버(WAS) -동적인 페이지 처리를 담당하며, 요청한 페이지의 로직을 수행하거나 필요할 시 데이터베이스와의 연동을 처리합니다. WAS내부에 웹서버와 웹컨테이너가 결합된 형태로 웹서버가 정적 페이지 처리, 웹컨테이너가 추가적인 동적 페이지 처리를 담당합니다. 대표적인 예시로는 톰캣(Tomcat)이 있습니다. 보시다 싶이, 위의 사진에서 WAS 내부에 Web Server와 Web Contai..