이 기사에서는 java에 대한 관련 지식을 제공합니다. Spring 프레임워크는 Bean을 관리하는 IoC 컨테이너이므로 Bean은 Spring에서 당연히 중요한 리소스입니다. 종류는 몇 가지인가요? 함께 살펴보시고, 모두에게 도움이 되었으면 좋겠습니다.
추천 학습: "java 비디오 튜토리얼"
Spring 프레임워크는 Bean을 관리하는 IoC 컨테이너이므로 Bean은 Spring에서 자연스럽게 중요한 리소스입니다. 종류는 몇 가지인가요? 다음을 살펴보겠습니다.
PS: Java의 공용 클래스는 Bean 또는 Java Bean이라고 부를 수 있습니다.
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 개체 사용자가 기본적으로 싱글톤 범위로 설정됨을 의미합니다. 이 싱글톤 객체가 어디에서나 수정되면 다른 클래스가 다시 호출될 때 수정된 값을 얻게 됩니다.
Spring에는 5가지 공통 범위가 있습니다.
2.1 싱글톤
설명: IoC 컨테이너의 이 범위에는 Bean 인스턴스가 하나만 있습니다. Bean(applicationContext.getBean 및 기타 메소드를 통해 획득)과 어셈블리 Bean(@Autowired를 통해 주입)은 동일한 객체입니다.
시나리오: 일반적으로
statelessBeans는 이 범위를 사용합니다. Stateless는 Bean 객체의 속성 상태를 업데이트할 필요가 없음을 의미합니다. 참고:
Spring은 기본적으로 이 범위를 선택합니다.2.2 프로토타입
설명: 이 범위에서 Bean에 대한 각 요청은 새 인스턴스를 생성합니다. Bean을 가져옵니다(즉, applicationContext를 통해). GetBean 및 기타 메소드) 및 어셈블리 Bean(즉, @Autowired를 통해 주입됨)은 새로운 객체 인스턴스입니다.
시나리오: 일반적으로
statefulBeans는 이 범위를 사용합니다. 2.3 request
설명: 각 Http 요청은 프로토타입과 유사한 새로운 Bean 인스턴스를 생성합니다.
시나리오: Http 요청 및 응답 공유 Bean.
참고: Spring MVC 프레임워크에서만 사용이 제한됩니다.
2.4 session
설명: Http 세션에서 Bean 인스턴스를 정의합니다.
시나리오: 사용자 세션의 공유 Bean(예: 사용자의 로그인 정보 기록)
참고: Spring MVC 프레임워크에서만 사용이 제한됩니다.
2.5 application
설명: Http Servlet Context에서 Bean 인스턴스를 정의합니다.
시나리오: 애플리케이션의 공유 정보 기록과 같은 웹 애플리케이션의 상황별 정보.
참고: Spring MVC 프레임워크에서만 사용이 제한됩니다.
3. 범위 설정
@Scope("prototype"과 같이 범위의 특정 값을 직접 설정합니다. ) ;
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)과 같이 ConfigurableBeanFactory 및 WebApplicationContext에서 제공하는 SCOPE_XXX 변수를 설정합니다.
구체적인 설정 코드는 다음과 같습니다.
Bean의 범위는 전체 Spring 프레임워크에서 Bean의 특정 동작 패턴을 나타냅니다. Bean에는 5가지 공통 범위가 있습니다: 싱글톤(단일 사례 범위), 프로토타입(프로토타입 범위), 요청(요청 범위), 세션(요청 범위) 및 애플리케이션(전역 범위) 도메인은 다음과 같습니다. Spring MVC 프레임워크에서만 사용할 수 있습니다.
추천 학습: "java 비디오 튜토리얼"
위 내용은 Bean 범위의 Java 상세 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!