>Java >java지도 시간 >Bean 범위의 Java 상세 분석

Bean 범위의 Java 상세 분석

WBOY
WBOY앞으로
2022-08-31 17:28:041497검색

이 기사에서는 java에 대한 관련 지식을 제공합니다. Spring 프레임워크는 Bean을 관리하는 IoC 컨테이너이므로 Bean은 Spring에서 당연히 중요한 리소스입니다. 종류는 몇 가지인가요? 함께 살펴보시고, 모두에게 도움이 되었으면 좋겠습니다.

Bean 범위의 Java 상세 분석

추천 학습: "java 비디오 튜토리얼"

Spring 프레임워크는 Bean을 관리하는 IoC 컨테이너이므로 Bean은 Spring에서 자연스럽게 중요한 리소스입니다. 종류는 몇 가지인가요? 다음을 살펴보겠습니다.

PS: Java의 공용 클래스는 Bean 또는 Java Bean이라고 부를 수 있습니다.

1. 범위

Bean의 범위는 전체 Spring 프레임워크에서 Bean의 특정 동작 모드를 나타냅니다. 예를 들어, 싱글톤 범위는 전체 Spring에 Bean의 복사본이 하나만 있고 전역적으로 공유된다는 의미입니다. 누군가가 값을 수정하면 다른 사람이 읽는 내용이 수정된 값입니다.

예를 들어 Spring에서 싱글톤 Bean 객체 사용자를 정의합니다(기본 범위는 싱글톤입니다). 구체적인 구현 코드는 다음과 같습니다.

@Component
public class UserBean {
    @Bean
    public User user() {
        User user = new User();
        user.setId(1);
        user.setName("Java"); // 此行为重点:用户名称为 Java
        return user;
    }
}

그런 다음 클래스 A의 사용자 객체를 사용하고 수정합니다.

@Controller
public class AController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        user.setName("MySQL"); // 此行为重点:将 user 名称修改了
        return user;
    }
}

마지막으로 user 객체는 클래스 B에서도 사용됩니다. 구체적인 구현 코드는 다음과 같습니다.

@Controller
public class BController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        return user;
    }
}

이때, B 객체의 getUser 메소드에 접근하면, 현재 사용자 이름은 클래스 A입니다. "MySQL"은 원래 "Java" 대신 "MySQL"에서 수정됩니다. 이는 Bean 개체 사용자가 기본적으로 싱글톤 범위로 설정됨을 의미합니다. 이 싱글톤 객체가 어디에서나 수정되면 다른 클래스가 다시 호출될 때 수정된 값을 얻게 됩니다.

2. 범위 분류

Spring에는 5가지 공통 범위가 있습니다.

  • singleton: 싱글톤 범위;
  • prototype: 프로토타입 범위(다중 사례 범위)
  • request: 요청 범위; 세션 범위;
  • 응용 프로그램: 전역 범위.
참고: 마지막 세 범위는 ​​Spring MVC 프레임워크에만 적용 가능합니다.

2.1 싱글톤

공식 설명: (기본값) 각 Spring IoC 컨테이너에 대한 단일 객체 인스턴스로 단일 Bean 정의 범위를 지정합니다.

설명: IoC 컨테이너의 이 범위에는 Bean 인스턴스가 하나만 있습니다. Bean(applicationContext.getBean 및 기타 메소드를 통해 획득)과 어셈블리 Bean(@Autowired를 통해 주입)은 동일한 객체입니다.

시나리오: 일반적으로

stateless

Beans는 이 범위를 사용합니다. Stateless는 Bean 객체의 속성 상태를 업데이트할 필요가 없음을 의미합니다. 참고:

Spring은 기본적으로 이 범위를 선택합니다.

2.2 프로토타입

공식 설명: 단일 Bean 정의의 범위를 원하는 수의 객체 인스턴스로 지정합니다.

설명: 이 범위에서 Bean에 대한 각 요청은 새 인스턴스를 생성합니다. Bean을 가져옵니다(즉, applicationContext를 통해). GetBean 및 기타 메소드) 및 어셈블리 Bean(즉, @Autowired를 통해 주입됨)은 새로운 객체 인스턴스입니다.

시나리오: 일반적으로

stateful

Beans는 이 범위를 사용합니다. 2.3 request

공식 설명: 단일 HTTP 요청의 수명 주기에 대한 단일 Bean 정의 범위를 지정합니다. 즉, 각 HTTP 요청에는 단일 Bean 정의 뒤에서 생성된 자체 Bean 인스턴스가 있습니다. 웹 인식 Spring ApplicationContext의 컨텍스트

설명: 각 Http 요청은 프로토타입과 유사한 새로운 Bean 인스턴스를 생성합니다.

시나리오: Http 요청 및 응답 공유 Bean.

참고: Spring MVC 프레임워크에서만 사용이 제한됩니다.

2.4 session

공식 설명: 단일 Bean 정의의 범위를 HTTP 세션의 라이프사이클로 지정합니다. 웹 인식 Spring ApplicationContext의 컨텍스트에서만 유효합니다.

설명: Http 세션에서 Bean 인스턴스를 정의합니다.

시나리오: 사용자 세션의 공유 Bean(예: 사용자의 로그인 정보 기록)

참고: Spring MVC 프레임워크에서만 사용이 제한됩니다.

2.5 application

공식 설명: 단일 Bean 정의의 범위를 ServletContext의 라이프사이클로 지정합니다. 웹 인식 Spring ApplicationContext의 컨텍스트에서만 유효합니다.

설명: Http Servlet Context에서 Bean 인스턴스를 정의합니다.

시나리오: 애플리케이션의 공유 정보 기록과 같은 웹 애플리케이션의 상황별 정보.

참고: Spring MVC 프레임워크에서만 사용이 제한됩니다.

3. 범위 설정

@Scope 주석을 통해 Bean의 범위를 설정할 수 있습니다. 설정하는 방법에는 두 가지가 있습니다.

@Scope("prototype"과 같이 범위의 특정 값을 직접 설정합니다. ) ;

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)과 같이 ConfigurableBeanFactory 및 WebApplicationContext에서 제공하는 SCOPE_XXX 변수를 설정합니다.

구체적인 설정 코드는 다음과 같습니다.

Bean의 범위는 전체 Spring 프레임워크에서 Bean의 특정 동작 패턴을 나타냅니다. Bean에는 5가지 공통 범위가 있습니다: 싱글톤(단일 사례 범위), 프로토타입(프로토타입 범위), 요청(요청 범위), 세션(요청 범위) 및 애플리케이션(전역 범위) 도메인은 다음과 같습니다. Spring MVC 프레임워크에서만 사용할 수 있습니다.

추천 학습: "java 비디오 튜토리얼"

위 내용은 Bean 범위의 Java 상세 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제