Spring Framework

스프링스프링과 객체 지향의 관계스프링은 다음 기술로 다형성, OCP, DIP를 가능하게 지원DI(Dependency Injection): 의존 관계, 의존성 주입DI 컨테이너 제공자바 객체를 컨테이너에 넣고 안에서 의존 관계를 연결하고 주입하는 기능 제공클라이언트 코드의 변경 없이 기능 확장구현체를 쉽게 교체할 수 있다스프링이 없을 때는OCP, DIP 원칙을 지키며 개발하다 보니 할 일이 많았다⇒ 프레임워크로 만들어버림순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 해 보면 DI 컨테이너 (스프링 프레임워크)를 만들게 된다정리모든 설계에 역할과 구현을 분리해야 한다역할만 정의해 두고 구현체는 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계이다다형성, OCP, DIP를 지켜야 함스프링 ..
자바 언어의 다형성다형성으로 인터페이스를 구현한 객체를 실행 시점에 유연하게 변경할 수 있다다형성의 본질인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다협력이라는 객체 사이의 관계에서 시작해야 함클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다ex) Repository를 상속하는 MemoryRepository, JdbcRepository 로 변경 가능역할과 구현을 분리유연, 변경 용이기존의 클라이언트 코드에 영향을 주지 않는다확장 가능한 설계인터페이스를 공유하기 때문에 가능한계인터페이스가 변경되면 클라이언트, 서버 모두 큰 변경 발생인터페이스를 안정적으로 잘 설계하는 것이 중요스프링과 객체 지향다형성이 가장 중요스프링은 다형성을 극대화해서 이용할 수 있게 도..
배경클라이언트가 서버로 요청하면 응답WASTCP/IP 커넥션 연결Servlet 호출서블릿 객체를 누가 호출하는가?⇒ 쓰레드쓰레드애플리케이션 코드를 순차적으로 실행프로세스프로세스: 프로그램 실행쓰레드: 프로그램 안에서 여러 가지 갈래로 나뉨자바 main() method를 처음 실해아면 main이라는 이름의 thread가 실행자바 애플리케이션을 실행시키는 주체가 threadthread가 없다면 자바 애플리케이션 실행 불가능쓰레드는 한 번에 하나의 코드 라인만 수행동시 처리가 필요하면 thread 추가로 생성단일 요청 - thread 하나 사용요청이 온다쓰레드 할당쓰레드로 서블릿 코드 실행응답 후 쓰레드 휴식다중 요청 - thread 하나 사용한다면요청2 들어옴요청1의 쓰레드의 서블릿 처리가 지연되고 있음DB..
상황 Actuactor -> Promethus -> Grafana 구조를 구현하려고 한다 자바 백엔드 서버는 로컬 서버 loacalhot:3000에서 실행하고 있다 Prometheus는 docker 인스턴스 :9090 포트로 띄우고 있다 Grafana도 docker 인스턴스 :80 포트로 띄우고 있다 아래 블로그 글을 참고했으나 버전이 바뀌어 맞지 않는 부분이 있다 https://hudi.blog/spring-boot-actuator-prometheus-grafana-set-up/ 그래서 Grafana에서 대시보드를 띄워도 "No Data" 에러가 발생한다. Application도 읽지 못 한다 해결법 prometheus.yml scrape_configs: - job_name: 'prometheus' s..
https://hudi.blog/spring-boot-actuator-prometheus-grafana-set-up/ Spring Boot Actuator, Prometheus, Grafana를 사용한 스프링부트 모니터링 환경 구축 이 포스팅에서는 Spring Actuator, Prometheus, Grafana를 사용하여 스프링부트 애플리케이션과 관련된 여러 메트릭을 수집하고, 시각화하여 모니터링할 수 있는 환경을 구축한다. 이 글에서는 각각의 컨 hudi.blog
해결법 application.yml # Spring Actuator management: env: enabled: true # /info에 포함할 정보 자유롭게 작성 info: contact: email: support@example.com phone: 000-0000-0000 management.env.enabled = true로 설정해 주면 된다 'Spring in Action 5판'에는 관련된 내용이 없는 것으로 보아 책이 출간된 이후 변경된 내용인 것 같다 출처 Spring Boot - Actuator 공식 문서
Spring Boot https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe docs.spring.io Spring B..
https://ksh-coding.tistory.com/128 [Spring] Spring에서 Session 저장소로 Redis 사용하기(feat. Redis Session Clustering) 0. 들어가기 전 이전 포스팅에서 간략하게 Redis를 살펴봤었습니다. 이전 포스팅에서는 Redis의 장점으로 인메모리 저장소의 특성으로 인한 빠른 성능을 중점적으로 소개했습니다. 이번에는 Spring ksh-coding.tistory.com Spring Security 활용한 예제 https://velog.io/@pppp0722/Reach-Rich-%EA%B0%9C%EB%B0%9C%EA%B8%B0-Spring-Security-Redis-Session%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%..