자바 학습 노트 15: 웹 개발 에서 전역 변수 에 대한 생각

2794 단어 자바 학습 노트
PHP 개발 에서 우 리 는 php 클래스 에서 많은 변 수 를 정의 하 는 데 익숙 하 다.php 는 해석 형 언어 이기 때문에 웹 개발 을 할 때 한 번 해석 하면 메모 리 를 방출 합 니 다.그러나 자바 는 약간 다 를 수 있 습 니 다. 자바 는 컴 파일 형 언어 입 니 다. 웹 용기 가 실 행 된 후에 클래스 의 대상 은 메모리 에 상주 합 니 다. 이 럴 때 클래스 의 대상 에 공용 변 수 를 정의 하면 서로 다른 사람 이 웹 프로그램 에 방문 하여 이 변 수 를 충돌 시 킬 수 있 습 니 다.
간단 한 예 를 볼 수 있다.
	public int i = 0; //         
	
	/**
	 *   
	 * @return
	 */
	@RequestMapping(value="/list")
	public ModelAndView list() {
		ModelAndView modelAndView = new ModelAndView();
		List lists = guestbookService.findGuestbooks();
		modelAndView.setViewName("test/list");
		modelAndView.addObject("userList", lists);
		this.i++; //i  
		System.out.print(i); //     i
		return modelAndView;
	}

우 리 는 i 의 변 수 를 정의 했다.일반적인 모드 에서 PHP 에서 브 라 우 저 에서 요청 합 니 다.http://127.0.0.1:8090/test/list/주 소 는 콘 솔 에서 1 을 출력 하고 다시 한 번 요청 합 니까? 아니면 1 입 니까?
그러나 자바 에서 우 리 는 결 과 를 볼 수 있다.
따라서 자바 에 있어 i 의 변 수 는 메모리 에 상주 합 니 다. 클래스 에 정의 되면 공유 변수 가 됩 니 다. 프로그램 에서 이 공유 변 수 를 사용 해 야 한다 면 다른 사람의 방문 이 이 사람의 i 변 수 를 덮어 쓰 는 결 과 를 가 져 올 수 있 습 니 다.
그럼 이 i 가 방법 안에 있다 면?방법 은 부분 변수 입 니 다. 방법 호출 이 끝나 면 메모리 가 방출 됩 니 다. 인 스 턴 스 를 보 겠 습 니 다.
	/**
	 *   
	 * @return
	 */
	@RequestMapping(value="/list")
	public ModelAndView list() {
		ModelAndView modelAndView = new ModelAndView();
		List lists = guestbookService.findGuestbooks();
		modelAndView.setViewName("test/list");
		modelAndView.addObject("userList", lists);
		int i = 0; //    
		i++; //i  
		System.out.print(i + "\r
"); // i return modelAndView; }

결과:
결 과 는 요청 할 때마다 부분 변 수 는 자동 으로 메모 리 를 방출 하 는 것 을 알 수 있다.
저 희 는 웹 개발 을 하면 데이터 구조의 대상 이 전 달 된 데 이 터 를 저장 하거나 자주 사용 해 야 할 데 이 터 를 정의 합 니 다. 예 를 들 어:
/**
 * guest_book     
 * @author zhuli
 */
public class GuestbookDo {
	
	private String title;
	
	private String content;
	
	private String username;
	
	private int id;
	
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public int getDtime() {
		return dtime;
	}

	public void setDtime(int dtime) {
		this.dtime = dtime;
	}

	private int dtime;
}

사실 이런 종 류 는 Service 와 같은 단일 사례 가 될 수 없다. 단일 사례 가 되면 데 이 터 는 공유 데이터 가 되 고 서로 다른 데이터 가 들 어 오 면 서로 덮어 쓴다.
그래서 모두 필요 한 곳 입 니 다. new 데이터 구조의 대상 입 니 다. 어차피 부분 변수 이기 때문에 운행 이 끝나 면 방출 됩 니 다.

좋은 웹페이지 즐겨찾기