일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- VUE
- Repository
- Security
- di
- HTTP
- 로그인
- thymeleaf
- 싱글톤
- Stateless
- Vue.js
- 캐시
- vuex
- javascript
- Spring
- cache
- BEAN
- HTTP 메서드
- Setter
- 라이프 사이클
- dependency injection
- 의존성 주입
- Kotlin
- Excel
- DB
- vue-cli
- 프로토타입
- Java
- JPA
- Singleton
- js
- Today
- Total
목록Spring (44)
jhhan의 블로그

이번 포스트에서는 싱글톤 방식에서 주의해야할 점에 대해서 알아보겠습니다. 싱글톤 패턴이나 스프링의 싱글톤 컨터이너이거나 객체 인스턴스를 하나만 생성해서 공유하는 방식에서 주의해야할 점이 있습니다. 바로 상태를 유지하게(stateful) 설계하면 안된다는 것입니다. 상태가 없도록(stateless) 설계해야 합니다. 즉, 특정 클라이언트에서 의존적인 필드가 존재하면 안됨. 특정 클라이언트에서 값을 변경할 수 있으면 안됨. 수정 로직이 있으면 안됨 & 읽기 로직만 존재할 것 공유되지 않는 지역변수, 파라미터 등을 사용해서 진행해야 함 이렇게 하지 않고 스프링 빈의 필드에 공유 값을 설정하면 큰 문제가 발생할 수 있습니다. 문제가 일어나는 예시를 한번 살펴보겠습니다. singleton 패키지 밑에 Statef..

이번 포스트에서는 싱글톤 패턴에 대해서 알아보겠습니다. 싱글톤 패턴은 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴 2개 이상의 객체가 만들어지지 않게 한다! 간단하게 생각하면 private을 이용해서 new로 생성하지 못하게 할 수 있다. 그러면 싱글톤 패턴을 간단하게 적용할 수 있게 해보겠습니다. singleton 패키지 밑에 SingletonService 자바 파일을 만듭니다. public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } pr..

이번 포스트에서부터는 싱글톤에 대해서 알아보겠습니다. 먼저 스프링에 대해 여담입니다. 태생 - 기업용 온라인 서비스 기술을 지원하기 위해 탄생 대부분의 스프링 애플리케이션 = 웹 애플리케이션 물론 Web이 아닌 것도 개발이 가능 웹 애플리케이션의 경우 보통 여러 명의 고객이 동시에 요청 하는 경우가 많습니다. 그리고 이전에 만든 것을 여기에 적용해 본다면 클라이언트A가 memberService를 호출합니다. 그러면 memberService1 객체가 생성됩니다. 클라이언트B가 memberService를 호출합니다. 그러면 memberService2 객체가 생성됩니다. .... 이렇게 된다면 100개의 요청이 들어오면 100개의 객체가 생성되고 소멸됩니다. (→ 그다지 좋은 시스템인 것 같지는 않습니다.....

저번 포스트까지는 스프링 빈을 조회하는 것에 대해 알아봤습니다. 이번에는 개념적인 부분에 대해서 좀 더 알아보겠습니다. ApplicationContext를 지금까지 자주 써왔는데 이것보다 더 근본적인 녀석이 있습니다. 바로 BeanFactory입니다. 상속 관계입니다. BeanFactory는 인터페이스입니다. BeanFactory를 상속하는 ApplicationContext가 있습니다. 역시 인터페이스입니다. 그리고 나중에 ApplicationContext를 구현하는 AnnotationConfigApplicationContext가 등장합니다. 이런 상속관계를 가집니다. 그럼 BeanFactory에 대해 좀 더 알아보겠습니다. 스프링 컨테이너의 최상위 인터페이스 스프링 빈 - 관리 & 조회 가능 ex) g..

저번에 적었던 스프링 코어(1) - 스프링 컨테이너 & 빈 포스트에 이어서 합니다. 이번엔 스프링 빈 조회 시 - 상속관계에 대해 알아보겠습니다. 부모타입으로 조회 → 자식타입도 함께 조회 최상위 객체인 Object로 조회 시, 모든 스프링 빈이 조회되어서 나오게 됩니다. 프로젝트 구조입니다. beanfind 패키지 밑에 ApplicationContextExtendsFindTest라는 자바 클래스를 만듭니다. @Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountP..

이번 포스트는 spring으로 엑셀파일을 다운받는 방법입니다. 다른 포스트들은 너무 복잡하게 나와있는 것 같아서 최대한 간단하게 해봤습니다. offbyone.tistory.com/250 참고한 블로그입니다. 먼저 간단한 스프링 프로젝트를 만듭니다. 프로젝트 설정 시 spring web과 thymeleaf를 추가해주시기 바랍니다. 저는 gradle로 진행했습니다. maven이어도 큰 문제는 없습니다. 프로젝트 구조입니다. -> 매우 간단합니다. ㅎㅎ build.gradle 파일을 먼저 설정해 봅니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springfra..

'자바와 스프링 그 사이' 시리즈 포스트에 이어서 진행합니다. 스프링 컨테이너와 빈에 대해서 간략하게 알아보려고 합니다. 스프링 컨테이너1 지난번 포스트의 코드 중 일부입니다. ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 인터페이스 AnnotationConfigApplicationContext는 구현체이다. 실제 ApplicationContext와 AnnotationConfigApplicationContext의 관계를 본다면 AnnotationConfigApplicationContext implements ApplicationContext 인것을 알 수 있다. 스프링 컨테이너2 스프링 컨테이너는 xml 기반일 수도 있고, 어노테이션 기반일 수도 있다...

이번에는 AOP에 대해서 다뤄보겠습니다. 전에도 AOP에 대해서 다룬 적이 있는데,,, 그 때는 AOP의 뜻과 개념만 얼핏 서술했습니다. 사실 그 때 AOP에 대해서 알지 못해서 그냥 어떻게든 적고 끝났습니다. 이번에는 코드를 통해서 좀 더 알아보겠습니다. 그래도 AOP를 완전히 이해한 것은 아니어서 설명이 부족할 수도 있겠네요... 먼저 AOP가 필요한 상황에 대해서 알아보겠습니다. ○ 예시: 모든 메소드의 호출 시간을 측정할려면?? 저런 예시가 있다 할 때 모든 메소드에 측정 로직을 추가할 수도 있겠지만,,, 제가 만드는 작은 프로젝트도 메소드가 10개가 넘어가던데... 10개에 일일이 다 추가하기에는 너무 비효율적입니다.. 한번 예시를 들어보죠 이전에 작성했던 MemberService 클래스로 예시..