Spring 의 singleton 과 prototype 의 실현
bean 의 역할 영역 에 대해 서 는 spring 에서 주로 singleton,prototype,session,request,global 을 포함 합 니 다.이 글 은 주로 singleton 과 prototype 을 설명 합 니 다.
하나. singleton
singleton 은 하나의 예 모드,즉 scope="singleton"의 bean 으로 용기 에서 한 번 만 예화 합 니 다.
dao 예제 코드:
package com.demo.dao;
public class UserDao {
public UserDao(){
System.out.println("UserDao ");
}
//
public String getUserName(){
// dao
return "Alan_beijing";
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.demo.dao.UserDao" id="userDao" scope="singleton"/>
</beans>
test:
public class MyTest {
@Test
public void test(){
//
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//
UserDao userDao = applicationContext.getBean(UserDao.class);
System.out.println(userDao.getUserName());
//
UserDao userDao2 = (UserDao) applicationContext.getBean("userDao");
System.out.println(userDao2.getUserName());
//
System.out.println(" :"+userDao+"
"+" :"+userDao2);
}
}
테스트 결과:
분석:테스트 코드 에서 bean 을 singleton 으로 정의 하고 응용 프로그램 Context 의 getBean()방법 을 통 해 bean(userDao)을 얻 었 으 나 같은 인 스 턴 스 대상 인 com.demo.dao 를 되 돌려 줍 니 다.UserDao@27a5f880자세히 살 펴 보면 bean 을 두 번 가 져 왔 지만 UserDao 의 무 참 구조 함수 가 한 번 만 호출 되 었 다 는 것 도 용기 에 있다 는 것 을 증명 한다.singleton 은 실제 적 으로 한 번 만 예화 되 었 습 니 다.주의해 야 할 것 은 Singleton 모드 의 bean,applicationContext 에서 bean 을 불 러 올 때 bean 을 예화 합 니 다.
정의 bean:
테스트 결과:
다음 코드 는 bean 만 불 러 왔 을 뿐 getBean 방법 으로 bean 을 가 져 오지 않 았 으 나 UserDao 는 한 번 호출 되 었 습 니 다.즉,정례 화 되 었 습 니 다.
2 프로 토 타 입
prototype 은 원형 모드 로 bean 을 몇 번 호출 하면 몇 번 을 예화 합 니까?
singleton 코드 를 원형 으로 변경 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.demo.dao.UserDao" id="userDao" scope="prototype"/>
</beans>
테스트 코드 는 singleton 과 같 지만 결 과 는 다르다.
분석:테스트 결 과 를 통 해 두 번 의 bean 을 호출 하면 두 번 의 UserDao 대상 을 예화 하고 대상 이 다 릅 니 다.주의해 야 할 것 은 prototype 유형의 bean 은 bean 을 가 져 올 때 만 예화 대상 입 니 다.
삼 singleton 과 prototype 의 차이
(1)singleton 은 용기 에서 한 번 만 예화 되 고 prototype 은 용기 에서 몇 번 호출 되면 몇 번 예화 된다.
(2)Appplication Context 용기 에서 singleton 은 applicationContext.xml 로 딩 할 때 미리 예화 되 고 prototype 은 호출 할 때 만 예화 되 어야 합 니 다.
singleton:
정의 bean:
테스트:
prototype:
정의 bean:
테스트:호출 되 지 않 음
테스트:호출
4.singleton 은 prototype 보다 성능 을 소모 하고 웹 개발 에 서 는 singleton 모드 를 추천 하 며,app 개발 에 서 는 prototype 모드 를 추천 합 니 다.
Spring 의 singleton 과 prototype 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.Spring singleton 과 prototype 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.