inflearn logo
강의

Course

Instructor

Java Spring Framework (renewed ver.) - Course for new programmers

Separate spring configuration files

싱글톤이 뭔가요..

913

seon

5 asked

0

싱글톤이 뭔가요..

java spring

Answer 2

5

yeongunheo

1. 싱글톤 패턴(Singleton pattern) 

싱글톤 패턴(Singleton pattern) 이란 생성자가 여러 차례 호출되더라도 실제로 객체를 단 하나만 생성하는 방법입니다. 즉, 처음 객체를 생성한 이후에 호출될 경우 이미 생성한 객체를 반환하여 하나의 인스턴스만을 사용하게 만드는 것을 말합니다.

2. 싱글톤 패턴 구현

2-1) 싱글톤 패턴을 사용하지 않았을 경우

@Test
void pureContatiner() {
    AppConfig appConfig = new AppConfig();

    //1. 호출할 때마다 다른 객체를 생성
    MemberService memberService1 = appConfig.memberService();
    
    //2. 호출할 때마다 다른 객체를 생성
    MemberService memberService2 = appConfig.memberService();
    Assertions.assertThat(memberService1).isNotSameAs(memberService2);
}

기본적으로 'Member member = new Member()'처럼 new 연산자를 이용해 객체를 생성하면 계속해서 객체를 만들어냅니다. 만약 많은 객체를 생성해야 하는 서비스(ex. 배민)를 만들 경우, 이방법을 사용한다면 메모리 낭비가 심해지게 됩니다.

2-2) 싱글톤 패턴을 사용할 경우

스프링 컨테이너를 예로 들면

@Test
void springContainer() {
    AnnotationConfigApplicationContext appConfig = new AnnotationConfigApplicationContext (AppConfig.class);
    MemberService memberService1 = appConfig.getBean(MemberService .class);
    MemberService memberService2 = appConfig.getBean(MemberService .class);

    System.out.println("memberService1 = " + memberService1);
    System.out.println("memberService2 = " + memberService2);

    Assertions.assertThat(memberService1).isSameAs(memberService2);
}

스프링 컨테이너로 Bean 객체를 호출할 경우 동일한 객체를 불러오는 것을 알 수 있습니다. (참조값 동일)

0

yeongunheo

참고: https://velog.io/@jaeeunxo1/spring-singleton

0

alscjf0505

객체 생성을 할 경우 원래라면 주소값이 다른데

싱글턴 패턴으로 객체를 생성하면 주소값이 모두 같습니다

spring mvc project 안뜸...

0

172

1

Project 'ch02_pjt_01' has no explicit encoding set ch02_pjt_01 /ch02_pjt_01 No explicit project encoding

0

2071

1

xml 부분 오류가 나옵니다.

0

301

1

spring legacy project 발견되지 않아서 문의 드립니다!

0

670

1

StudentDao파일은 생성자가 없는데 왜그런가요?

0

382

1

스프링 레거시 프로젝트 생성 오류 질문드립니다.

0

388

1

application context.xml 관련 문의

0

570

2

StudentAssembler 클래스 질문드립니다.

0

340

0

sts를 설치하니까 해당 오류때문에 진도를 못나가고있습니다..

0

1053

1

qualifier 를 왜 [퀄리필러]로 발음 하시는지 ㅠㅠ 처음에 잘 못알아들엇네요

2

470

0

spring MVC project 가 보이지 않아요

0

483

1

'커넥션 풀' 등 DB와 연동하는 setup 에서의 유저정보 노출의 문제

0

321

0

memLogin 메서드에서 @RequestParam으로 받을시

0

229

0

model 파라미터가 들어온다고 하셨는데

0

274

1

import 시, pom.xml 파일 인식 못함

0

783

1

해결법 - The type org.springframework.context.ConfigurableApplicationContext cannot be resolved.

0

1379

0

12강 어노테이션에서 MainClassUseConfiguration.java 이거 돌리면 Cannot load configuration class: ems.member.configuration.MemberConfig 에러 나오는데 어떻게 해결하나요

0

1437

2

질문드립니다!

0

258

0

STS 설치와 MVC 프로젝트 생성 에러

0

334

0

처음 시작하며 compiler path 또는 version 관련 에러로 run 안될시

1

295

1

Join 과 Main으로 가는 링크 질문 (17강 13분)

0

229

0

14강 STS3 설치시 마켓플레이스에서 찾을 수 없을 때 해결방법

3

2848

0

이런 에러가 나오는데요. 왜 그런 걸까요?

0

305

1

Assembler와 DAO의 차이가 뭔가요?

0

423

2