본문 바로가기
Programming/Java + Spring

[Spring] DI 실습

by 콩king 2022. 9. 26.

xml 파일

▶xml 파일에 미리 선언해 놓음
>> 자바 메인 파일에서 new 안쓰고 기존에 만들어 놓은걸 우리가 필요할때마다 씀
▶<xml> 파일에서 데이터 넣어줄 때
>> 자바 클래스파일에 생성자 또는 setter 있어야 함
>> 생성자 있으면 contructor 씀
>> setter 있으면 property 씀

▶ 위에 1,2,3 방법 아래 방식으로 쓸 수 있음

 

Main 자바 클래스 에서

// 스프링 설정 파일 연결
ApplicationContext context = new
	ClassPathXmlApplicationContext ("com/human/basic/ex1_xml1/applicationContext.xml");

// DI 컨테이너에서 빈 가져오기
MessageBean bean3 = context.getBean("ko",MessageBean.class);
bean3.sayHello("홍길동");
MessageBean bean4 = context.getBean("en",MessageBean.class);
bean4.sayHello("john");
// 자바소스에서 new 코딩을 없애고 두 클래스간의 결합도를 낮춰서
// 한쪽 클래스 변경에 의한 새로 컴파일 / 복사 / 시랭을 안해도 될 수 있음
    
// 1.생성자
// (xml파일에서 bean id랑 같게 쓰고, 어떤자료형타입으로 가져올꺼냐)
MemberBean mb1 = context.getBean("memberBean", MemberBean.class);
mb1.show();

// 2. setter 연결
MemberBean mb2 = context.getBean("memberBean2", MemberBean.class);
mb2.setAge(21);
mb2.show();

// 3. DAO 연결
System.out.println("DAO-------------");
MemberDAO dao = context.getBean("dao", MemberDAO.class);
dao.insert();

// component 연결
// 1,2번 주석 처리하고
MemberBean mb3 = context.getBean("memberBean", MemberBean.class);
mb3.show();

▶ 출력문

▶ 생성자 / setter / DAO ▶  1,2 주석처리 후 component / DAO
생성자-------------
name >> 홍길동
age >> 20
message >> 생성자
setter-------------
name >> 홍길순
age >> 21
message >> setter
DAO-------------
홍길동<20>생성자
name >> 홍길동
age >> 20
message >> 생성자
DAO-------------
홍길동<20>생성자


▶ xml 파일에서 1,2,3 있어야함
▶ xml 파일에서 componet-scan은 주석 처리
▶ xml 파일에서 1,2,3은 주석처리
▶ xml 파일에서 componet-scan은 있어야함

 

MemberBean 자바 클래스 파일

▶ 생성자 / setter

@Component	// memberBean (첫글자만 소문자로 변경하여 변수로 생성)
public class MemberBean {	
	private String name;
	private int age;
	private String message;

	// 기본 생성자
	public MemberBean() {
		System.out.println("기본 생성자");
		this.name = "길동";
		this.age = 20;
		this.message = "아 어렵다";
	}
	
    	// 생성자
	public MemberBean(String name, int age, String message) {
		System.out.println("3개의 파라미터");
		this.name = name;
		this.age = age;
		this.message = message;
	}
	
	public void show() {
		System.out.println("name >> "+ name);
		System.out.println("age >> "+ age);
		System.out.println("message >> "+ message);
	}

	// setter
	public void setName(String name) { this.name = name; }
	    public void setAge(int age) { this.age = age; }
	public void setMessage(String message) { this.message = message; }

	public String getName() { return name; }
	public int getAge() { return age; }
	public String getMessage() { return message; }

}

 

MemberDAO 파일

@Component("dao")  // id = "dao"
public class MemberDAO {

	// (3) 필드 기반 의존성 주입 방식
	@Autowired // MemberBean 객체가 빈 컨테이너에 있다면 알아서 연결
	private MemberBean member; // = new MemberBean() 생략된 것

	// (1) 생성자
	public MemberDAO() {
	}

	public MemberDAO(MemberBean member) {
		this.member = member;
	}
	
    // (2) setter
	public void setMember(MemberBean member) {
		this.member = member;
	}

	public void insert(){
		System.out.println(member.getName() + "<" + member.getAge() +">" + member.getMessage());
	}

}




'Programming > Java + Spring' 카테고리의 다른 글

[Spring] 게시판 만들기 / 글 목록 가기  (0) 2022.09.27
[Spring] 게시판 실습 / 준비 단계  (0) 2022.09.27
[Spring] DI 의존성 주입  (0) 2022.09.26
[Spring] 프레임워크  (0) 2022.09.26
[Java] 형변환  (0) 2022.07.17

댓글