버글버글

Java 수업 기록 (13) 라이브러리 - Bean 본문

java/java 수업 기록

Java 수업 기록 (13) 라이브러리 - Bean

Bugle 2022. 8. 4. 00:00
반응형

Bean( = Vo, Dto) 

1. 여러데이터를 모아 놓은 객체(데이터를 보관하는 용도)

* 프로젝트 안에 롬복 넣는 방법.

- 프로젝트 안에 롬복을 넣어줘야 한다.
프로젝트 우클릭 ▷ Build Path ▷ Configure Build Path
Libraries 클릭 ▷ Classpath 선택 ▷ 우측 Add External JARs... 클릭

▷ jar을 선택

생성 된 화면
프로젝트에 추가된 화면

사용 예시)

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
	
	private String id;
	private String pw;
	
	public static void main(String[] args) {
		
		User user = new User();
		user.setId("admin");
		System.out.println(user.getId());
	}

}

constructor 

@NoArgsContructor @AllArgsContructor
    public employee () {}     public Employee(int empNo, String name) {
        super();
        this.empNo = empNo;
        this.name = name;
        }

생성자 라이브러리는 위의 표와 동일하다. (같은 의미)

Singleton 패턴 

1. singleton 객체는 하나만 생성된다.
   (new 로 생성 불가.)

* static 필드

1. 객체 생성 이전에 메모리에 미리 만들어 두는 필드

* static 메소드(클래스 메소드)
1. 클래스가 생성될 때 함께 생성되는 메소드
2. 객체 생성 이전에 만들어지기 때문에 객체로 접근하지 않는다.
3. 클래스이름으로 접근한다.
ex) User user = User.getInstance();

public class User {
	
	// static 필드
	// 객체 생성 이전에 메모리에 미리 만들어 두는 필드
	private static User user = new User();
	
	private User() {	// User 객체 생성은 User 내부에서만 가능하다.
		
	}
	
	// static 메소드(클래스 메소드)
	
	public static User getInstance() {
		return user;
	}
public class Main {

	public static void main(String[] args) {
		
		// singleton 객체는 하나만 생성된다.
		
		User user1 = User.getInstance();
		System.out.println(user1);
		
		User user2 = User.getInstance();
		System.out.println(user2);
		
		// User user = new User(); 외부에서는 새로운 객체를 생성할 수 없음.

	}

 Builder 패턴 

1. User 클래스 내부에 Builder 클래스 생성

2. User 클래스를 이용해서 호출하기 위해 static 처리

public class User {
	
	// 필드(Builder 객체가 가진 값을 받아 옴)
	private int userNo;
	private String id;
	private String email;
	
	// 디폴트 생성자.
	// Builder 클래스의 build() 메소드가 호출하는 생성자
	public User(Builder builder) {
		this.userNo = builder.userNo;
		this.id = builder.id;
		this.email = builder.email;		
	}
	
	// Builder 반환 메소드
	public static Builder builder(){
		return new Builder();
	}
	
	
	// User 클래스 내부에 Builder 클래스 생성
	// User 클래스를 이용해서 호출하기 위해 static 처리
	public static class Builder {
		
		// 내부 필드(여기에 값을 전달 받아서 User의 필드로 보내는 원리)
		private int userNo;
		private String id;
		private String email;
		
		// userNo() 메소드
		public Builder userNo(int userNo) {
			this.userNo = userNo;
			return this;
		}
		
		// id() 메소드
		public Builder id(String id) {
			this.id = id;
			return this;
		}
		
		// email() 메소드
		public Builder email(String email) {
			this.email = email;
			return this;
		}
		
		// build() 메소드
		public User build() {
			return new User(this);
			// 여기서 this는 builder (필드) 객체를 의미함. (userNo, id, email을 가지고 있는 객체)를 의미함.
		}
		
	}	// class Builder

 

public class Main {

	public static void main(String[] args) {

		User user = User.builder()
				.userNo(1)
				.id("admin")
				.email("admin@naver.com")
				.build();		// 여기까지 만들어 주세요. 끝남을 알리는 명령어.
		
		System.out.println(user);

	}

 

반응형