자바 공부/스프링공부

스프링 DI,IOC 사용해보기

ari0930 2024. 5. 9. 22:50

스프링 DI, IOC 사용해 보기 

프로젝트 구성

 

user.java

유저번호와,유저이름이 담을 객체파일이다. 

package test_pj_01.user;

public class User {
	private int num;
	private String name;
	
	public User(int num, String name) {
		this.num = num;
		this.name = name;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	

}

 

UserDao.java

나중에 mysql 연결할때 db와 연결하기 위한 파일로 현재로서는 새로운 데이터 사입과 현재까지 들어온 데이터를 보여주는 기능이 담겨있다.

package test_pj_01.dao;

import java.util.ArrayList;
import java.util.List;

import test_pj_01.user.User;

public class UserDao {
	private List<User> users = new ArrayList<>();
	
	
	//선택하기
	public User select(int num) {
	    for (User user : users) {
	        if (user.getNum() == num) {
	            return user; // num 값이 일치하는 User 객체를 찾으면 반환
	        }
	    }
	    return null; // 일치하는 사용자를 찾지 못한 경우 null 반환
	}
	
	//추가
	
	public void insert(User user) {
		users.add(user);
	}
	
	//모두 보여주기
	
	public List<User> show() {
		return users;
		
	}

}

Userinsert.java

Userinsert 클래스가 UserDao 객체를 생성하는 대신 외부에서 주입받기때문에 DI를 사용해 보았다.

package test_pj_01.service;

import test_pj_01.dao.UserDao;
import test_pj_01.user.User;

public class Userinsert {
	private UserDao usersDao;
	
	public Userinsert(UserDao usersDao) {
		this.usersDao = usersDao;
	}

	public void useinsert(User user) {
		User user_v = usersDao.select(user.getNum());
		if (user_v==null) {
			usersDao.insert(user);
			System.out.println("추가완료");
		}
		else {
			System.out.println("이미존재합니다");
		}
		
	}
	

}

 

Usershow.java

현제까지 등록된 내용물을 보여준다.

package test_pj_01.service;

import java.util.List;

import test_pj_01.dao.UserDao;
import test_pj_01.user.User;

public class UserShow {
	private UserDao usersDao;

	public UserShow(UserDao usersDao) {
		this.usersDao = usersDao;
	}
	
	public void useshow() {
		List<User> users = usersDao.show();
		for (int i=0; i<users.size(); i++) {
			System.out.println(users.get(i).getName());
			
		}
	}
	
}

applicationContext.xml

bean 방식으로 작성하였고

 userDao를 객체로 등록하였으며

userDao를 사용하는 Userinsert와 Usershow를 객체로 등록하고 난 후

<constructor-arg ref="userDao"></constructor-arg> 작성하여 userDao를 넣어주었다. (의존성 주입)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="userDao" class="test_pj_01.dao.UserDao"></bean>


	<bean id="userinsert" class="test_pj_01.service.Userinsert">
		<constructor-arg ref="userDao"></constructor-arg>
	
	</bean>
	
		<bean id="userShow" class="test_pj_01.service.UserShow">
		<constructor-arg ref="userDao"></constructor-arg>
	
	</bean>
	
</beans>

 

 

 

Main.java

bean 작성한 것들을 사용하여 main에 결과를 나타나도록 하였다.

 

package test_pj_01.main;

import java.util.Scanner;

import org.springframework.context.support.GenericXmlApplicationContext;

import test_pj_01.service.UserShow;
import test_pj_01.service.Userinsert;
import test_pj_01.user.User;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		boolean a=true;
		GenericXmlApplicationContext ctx=new GenericXmlApplicationContext("classpath:applicationContext.xml");

		Scanner input = new Scanner(System.in);
		while(a) {
			System.out.println("작성하시겠습니까");
			int number = input.nextInt();
			 input.nextLine(); // 개행 문자 처리
			if (number==1) {
				System.out.println("등록번호 작성");
				int num = input.nextInt();
				  input.nextLine(); // 개행 문자 처리
				System.out.println("이름 등록 작성");
				String name =input.nextLine();
				
				Userinsert userinsert =ctx.getBean("userinsert",Userinsert.class);
				userinsert.useinsert(new User(num, name));
				
				
			}
			else {
				System.out.println("현재까지 등록된 사람의 이름입니다.");
				UserShow userShow =ctx.getBean("userShow",UserShow.class);
				userShow.useshow();
				a=false;
				
			}
			
		}

	}

}

 

결과

다음에 해볼 거는 이걸 이용하여 mysql 하고 간단한 테이블을 만들어 연결해 보는 것을 해볼 것이다. 

반응형