스프링 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 하고 간단한 테이블을 만들어 연결해 보는 것을 해볼 것이다.
반응형
'자바 공부 > 스프링공부' 카테고리의 다른 글
리액트 스프링부트를 이용한 토이프로젝트 및 공부 (0) | 2024.05.19 |
---|---|
컨트롤러,Service,DAO (0) | 2024.05.15 |
JDBCTemplate 사용하기 (0) | 2024.05.13 |
자동으로 의존 객체 주입하기 (0) | 2024.05.10 |
스프링 DI와 IOC (0) | 2024.05.08 |