SpringBoot 7 편의 Bean 역할 영역

3683 단어 자바
IoC 용기 최상 위 인터페이스 BeanFactory 에는 isSingleton(단일 예),isPrototype(원형)이 있 습 니 다.
두 가지 방법,isSingleton 방법 이 true 로 돌아 가면 bean 은 IoC 용기 에 하나의 예 로 존재 합 니 다.이것 은 spring 입 니 다.
IoC 용기 의 기본 값 입 니 다.
isPrototype 은 true 로 bean 을 가 져 올 때마다 새로운 bean 을 만 듭 니 다.
단일 예(singleton),원형(pototype)즉 bean 의 두 가지 역할 영역 입 니 다.
spring 은 모두 다음 과 같은 몇 가지 역할 영역 이 있다.
Bean 의 역할 영역
역할 영역 유형
사용 범위
역할 영역 설명
singleton
사용 하 는 spring 응용
기본 값,IoC 용 기 는 하나의 예 만 존재 합 니 다.
prototype
모든 spring 응용
ioc 용기 에서 bean 을 가 져 올 때마다 새로운 bean 을 만 듭 니 다.
session
spring 웹 응용
http 세 션
application 
spring 웹 응용
웹 프로젝트 수명 주기
request
spring 웹 응용
웹 단일 요청
globalSession
spring 웹 응용
전체 httpsession 에서 하나의 bean 은 하나의 인 스 턴 스 에 대응 합 니 다.
 
 
 
 
 
 
 
 
 
테스트 역할 영역:
package com.didispace.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
//@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)         ,       
public class DataBaseProperties {
    @Value("${database.driverName}")
    private String driverName;

    @Value("${database.url}")
    private String url;

    @Value("${database.userName}")
    private String userName;

    @Value("${database.password}")
    private String password;

    public String getDriverName() {
        return driverName;
    }

    public void setDriverName(String driverName) {
        System.out.println(driverName);
        this.driverName = driverName;
    }

    public String getUrl() {

        return url;
    }

    public void setUrl(String url) {
        System.out.println(driverName);
        this.url = url;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
package com.didispace.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;


//@Configuration       java    ,
// spring           IoC    Bean
@Configuration
@ComponentScan(value = "com.didispace.*")
public class AppConfig {

}
package com.didispace;


import com.didispace.bean.DataBaseProperties;
import com.didispace.bean.User;
import com.didispace.config.AppConfig;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class IoCTest {
    private static Logger log = Logger.getLogger(IoCTest.class);

    public static void main (String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
        DataBaseProperties user = ctx.getBean(DataBaseProperties.class);
        DataBaseProperties user1 = ctx.getBean(DataBaseProperties.class);
        System.out.println(user1 == user);
        log.info(user.getUserName());
    }
}

코드@Scope(ConfigurableBeanFactory.SCOPEPROTOTOTTYPE)중
ConfigurableBeanFactory 는 두 가지 유형 만 있 습 니 다.SCOPESINGLETON,  SCOPE_PROTOTYPE
spring 웹 용기 의 네 가지 유형 을 사용 하려 면 웹 애플 리 케 이 션 Context 를 사용 하여 다른 역할 영역 을 정의 해 야 합 니 다.
SCOPE요청(요청),세 션(SCOPESESSION)과 애플 리 케 이 션(SCOPE APPLICATION).
 

좋은 웹페이지 즐겨찾기