본문 바로가기

WEB38

[Spring] @ComponentScan, Bean 객체 관리하기 [Spring] @ComponentScan 개념, Bean 객체 관리하기 Spring ApplicationContext Spring Boot 기반의 웹 애플리케이션을 개발할때 클래스 상단에 여러가지 어노테이션을 설정하는데 @Component, @Service, @Controller 등등 이러한 어노테이션을 등록하는 목적과 메서드에 적용하는 @Bean 어노테이션의 차이점에 대해서 알아보겠습니다. @Component 를 이해하기 전에 먼저 스프링 어플리케이션 컨텍스트(Spring ApplicationContext)에 대한 이해가 필요합니다. Spring ApplicationContext는 Spring이 Bean 객체를 자동으로 관리, 배포할수 있도록 보관하는 장소입니다. SpringBoot에서 Bean객체에.. 2023. 12. 14.
[Spring] @Configuration과 싱글톤 패턴의 관계 싱글톤 패턴 조건 Bean 설정 정보를 구현한 AppConfig 클래스에서 memberRepository 메서드는 MemoryMemberRepository 클래스의 인스턴스를 반환합니다. 그렇다면 memberService, orderService 메서드에서 memberRepository 메서드를 호출할때 마다 새로운 인스턴스를 생성하여 싱글톤 패턴이 안될것 같은데 스프링에서 어떻게 싱글톤 패턴을 유지하는지 알아 보겠습니다. AppConfig.java @Configuration public class AppConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public D.. 2023. 12. 13.
[Spring] 싱글톤 패턴과 싱글톤 컨테이너 개념 [Spring] 싱글톤 패턴과 싱글톤 컨테이너 개념 싱글톤 컨테이너의 개념 싱글톤 컨테이너란 클래스의 인스턴스가 Java JVM 내의 단 하나만 존재하는 것을 뜻합니다. 웹 애플리케이션은 수많은 클라이언트로부터 서비스 요청을 받는데 만약 서버에서 클라이언트의 요청을 받아 처리할때마다 내부에서 클래스 인스턴스를 생성하게 되면 JVM 메모리의 사용량이 증가하게 되고 서버는 부하를 감당할 수 없게 될 것입니다. 테스트 코드 간단한 테스트 코드를 통해 위의 상황을 확인 해보겠습니다. Appconfig.java @Configuration public class AppConfig { @Bean public MemberRepository getMemberRepository() { return new MemoryMem.. 2023. 12. 13.
[Spring] MongoDB 연동하고 데이터 관리하기 [Spring] MongoDB 연동하고 데이터 관리하기 MongoDB는 NoSQL 데이터베이스중 하나로 여러 기업에서 사용하고 있을정도로 성능이 검증된 데이터베이스입니다. MongoDB의 기본적인 구조는 데이터베이스, 컬렉션, 도큐먼트 단위로 관리됩니다. 일반적인 RDBMS와 비교해보면 다음과 같습니다. MongoDB RDBMS (Oracle, Mysql...) Database Database Collection Table Document Row Spring Boot 기본 설정 의존성 추가 mongodb, spring web을 사용하기위해 의존성을 추가합니다. implementation 'org.springframework.boot:spring-boot-starter-data-mongodb&#39.. 2023. 12. 13.
CentOS Apache 설치, 실행하는 방법 Linux에서 Apache 설치, 실행하기 Apache 설치 Apache를 설치하기전에 기존 아파치가 설치 되어있을수도 있으니 먼저 확인합니다. rpm -qa | grep httpd 설치가 안된것을 확인후에 아파치를 설치합니다. 설치 경로는 /etc/httpd 에 생성됩니다. yum install httpd Apache 설치후 작업 방화벽 설정 Apache가 외부에서 접근할 수 있도록 방화벽 설정을 변경해야 합니다. firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload CentOS8, Redhat8 부터는 다음과.. 2023. 12. 8.
[Spring] 웹소켓(Websocket) 1:1 통신, HandshakeHandler [Spring] 웹소켓(Websocket) 응용 1:1 통신 웹소켓 1:1 통신, @SendToUser 지난번에 작성했던 웹소켓 가이드에서는 서버에 연결된 모든 클라이언트들과 통신하는 방법에 대해 설명했었습니다. 이번에는 1:n이 아닌 1:1 통신에 대해 설명해보겠습니다. 웹소켓을 처음 학습한다면 [Spring] 웹소켓(Websocket) 개념과 예제 글을 먼저 보시기 바랍니다. 웹소켓으로 1:1 통신을 하기 위해서는 @SendTo어노테이션이 아닌 @SendToUser어노테이션을 사용해서 컨트롤러를 구성합니다. @SendToUser는 WebSocket을 사용하여 특정 클라이언트에게 메시지 전달기능을 구현할수 있게 하는 어노테이션입니다. 1:N 방식에서 사용하던 @SendTo는 같은 주제(topic)를 구.. 2023. 9. 5.
[Spring] 웹소켓(Websocket) 개념과 예제 [Spring] 웹소켓(Websocket) 개념과 예제 웹소켓(Websocket) 이란 이미지 출처: https://www.vaadata.com/blog/websockets-security-attacks-risks/ 웹소켓(WebSockets)은 양방향 통신을 지원하는 네트워크 프로토콜로, 클라이언트와 서버 간의 실시간 데이터 전송을 위해 사용됩니다. 기존의 HTTP 프로토콜은 클라이언트가 서버에 요청을 보내고 서버가 응답을 반환하는 단방향 통신을 지원하였지만, 웹소켓은 이와 달리 양방향 통신을 가능하게 해줍니다. 웹소켓은 주로 웹 애플리케이션에서 실시간 통신을 구현하는 데 사용되며, 대부분의 최신 브라우저와 서버 측 언어에서 지원됩니다.JavaScript를 사용하여 클라이언트 측에서 웹소켓을 다루는 것.. 2023. 8. 11.
HTTP 상태코드의 종류와 의미 HTTP 상태코드 (1xx, 2xx, 3xx, 4xx, 5xx) 의미 HTTP 상태코드 종류 HTTP의 상태코드란 클라이언트가 보낸 요청에 대해 처리 상태를 알려주는 기능입니다. 상태코드는 크게 5가지 타입이 존재하며 각 타입은 다음과 같은 의미를 가지고 있습니다. 1xx(정보): 서버가 요청을 수신했으며 계속 처리 중임을 나타내는 중간 응답입니다. 2xx(성공): 클라이언트의 요청이 성공했음을 나타냅니다. 3xx(리디렉션): 클라이언트가 요청을 완료하기 위해 리디렉션과 같은 추가 작업을 수행해야 함을 나타냅니다. 4xx(클라이언트 오류): 누락되거나 잘못된 매개변수와 같은 클라이언트 요청으로 오류가 있음을 나타냅니다. 5xx(서버 오류): 요청을 처리하는 동안 서버 측에서 오류가 발생했음을 나타냅니다... 2023. 5. 17.