제1장: spring 주입 / 1.6 개의 Bean 은 다른 Bean / 1.6.2 @ Service 방식 / 1.6.2.2 단일 모드 에 의존 합 니 다.

3312 단어 spring
  • 단일 모드
  • 수요: 한 유형의 속성 에 다른 유형의 Bean 을 사용 해 야 하고 속성 Bean 을 초기 화 해 야 합 니 다
  • 설정 파일 은 많은 설정 항목 을 통합 시 켰 습 니 다. 예 를 들 어 authcode:   check:       num: 5       time: 120
  • 의존 하 는 클래스 (예 를 들 어 설정 클래스) 는 이 설정 항목 을 사용 합 니 다. 예 를 들 어
    package com.yxbj.config;
    
    import org.springframework.beans.factory.annotation.Value;
    
    public class ConfigParam {
    
    	@Value("${authcode.check.num}")
    	int checkNum;
    
    	@Value("${authcode.check.time}")
    	int checkTime;
    
    	public int getCheckNum() {
    		return checkNum;
    	}
    
    	public void setCheckNum(int checkNum) {
    		this.checkNum = checkNum;
    	}
    
    	public int getCheckTime() {
    		return checkTime;
    	}
    
    	public void setCheckTime(int checkTime) {
    		this.checkTime = checkTime;
    	}
    
    	@Override
    	public String toString() {
    		return "ConfigParam [checkNum=" + checkNum + ", checkTime=" + checkTime + "]";
    	}
    
    	public ConfigParam() {
    		System.out.println("ConfigParam   ");
    	}
    
    }
    
  • 의존 류 는 설정 류 에 의존 하 는 속성 이 있 습 니 다. 예 를 들 어
    package com.yxbj.authcode;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.yxbj.config.ConfigParam;
    
    @Service
    public class ServiceNoSingleton {
    
    	@Autowired
    	ConfigParam configParam;
    
    	public ServiceNoSingleton(ConfigParam configParam) {
    		System.out.println("       " + configParam);
    	}
    
    	public boolean isTimeout(int time) {
    		System.out.println(configParam);
    		if (time > configParam.getCheckTime()) {
    			return true;
    		}
    		return false;
    	}
    }
    
  • 클래스 에 주석 추가 @ Service public class ServiceSingleton {
  • 의존 할 속성 을 정의 합 니 다 @ Autowired ConfigParam configParam;
  • 매개 변수 구조 기: / * *      * 개인 적 으로 단일 모드 로 변경      *       * @param configParam       */      private ServiceSingleton(ConfigParam configParam) {            System. out. println ("구조 기 입력 인자" + configParam);     }  

  • 설정 클래스 를 만 듭 니 다. 예 를 들 어 @ Configuration public class BeanConfig {     @Bean(name = "configParam")      public ConfigParam configParam() {            return new ConfigParam();      } //여기 빈 은 @ Service 로 대체 / /   @Bean //   @DependsOn(value = { "configParam" }) //   public DependOnSingleton dependOnNoSingleton() { //         System. out. println ("단일 구성 기 가 져 오기: AuthCode 관리"); /         DependOnSingleton dependOnSingleton = DependOnSingleton.getSignleton(); //         return dependOnSingleton; //   } }  
  • 의존 류 를 사용 합 니 다. 예 를 들 어 Control 에서 사용 합 니 다.
    package com.yxbj.control;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.yxbj.authcode.ServiceNoSingleton;
    
    @RestController
    public class MyUserControl {
    
    	@Autowired
    	ServiceNoSingleton serviceNoSingleton;
    
    	@GetMapping("user")
    	public String getUser() {
    		boolean b = serviceNoSingleton.isTimeout(150);
    		if (b) {
    			return "    ";
    		} else {
    			return "   ";
    		}
    	}
    }
    
  • 시작 프로 세 스 로그: ConfigParam 초기 화 구조 기 입력 매개 변수 ConfigParam [checkNum = 5, checkTime = 120]
  • 호출:http://localhost:8080/user/
  • 전체 소스 코드:
  • 좋은 웹페이지 즐겨찾기