본문 바로가기

Spring/이론

[Spring] Bean

 

Bean은 Java의 객체를 외부에서 생성하는 방법입니다.

프로그램 실행 속도는 느려질 수 있지만,

관리와 유지보수가 편해진다는 장점이 있습니다.

 

package com.puft.feb101;

public class Dog {
   private String name;
   private int age;
public Dog() {

}
   
   public Dog(String name, int age) {
   super();
   this.name = name;
   this.age = age;
   }

public String getName() {
return name;
}

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

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
   
}

 

원래는 이렇게 Java 코드를

 

 

Java파일을 만들어서 객체를 생성했었는데

Spring에서는 Bean파일을 만들어서 대체할 수 있습니다.

 

 

src/mainresources에 beans.xml파일을 하나 만들겠습니다.

 

안에 기본 코드는 냅두고

bean 태그를 활용해서 클래스 경로를 지정하면

객체를 생성할 수 있습니다.


<bean id = "d" class = "cohttp://m.puft.feb101.Dog"></bean>


이 xml객체를 Controller쪽에서 가져와야 하는데

 

Controller에 다음과 같은 코드를 추가해줍니다.

 

//AbstractApplicationContext : Bean 객체를 생성하고 관리하는 기능

AbstractApplicationContext aac = new ClassPathXmlApplicationContext("feb102beans.xml");


//aac가 없어질 때 등록해놓은 객체들을 다 없애라
aac.registerShutdownHook();

//aac없애기
aac.close();


다시 xml로 돌아가서 객체의 생성자에 접근하는 방법을 알아보겠습니다.

 

<bean id = "d2" class = "cohttp://m.puft.feb101.Dog">
  <property name="name" value = "개님" />
  <property name="age" value = "40" />
</bean>

 

첫번째 방법인 property 태그는

객체의 변수에 직접 접근해서

값을 집어넣고

 

<bean id = "d3" class = "cohttp://m.puft.feb101.Dog">
   <constructor-arg value = "개느님"/>
   <constructor-arg value = "999"/>
   
</bean>

 

두번쨰 방법인 constructor-arg는 

생성자에 할당된 각 변수

순서대로 value를 넣어주면

각 변수가 들어간 객체를 생성할 수 있습니다.

 

각 객체는 다음과 같이 HomeController에서 접근할 수 있습니다.

 

Dog d2 = aac.getBean("d2", Dog.class);
System.out.println(d2.getName());
System.out.println(d2.getAge());
System.out.println("-----------");


Dog d3 = aac.getBean("d3", Dog.class);
System.out.println(d3.getName());
System.out.println(d3.getAge());

 

aac.getBean메소드를 사용해서 해당 클래스의 객체를 접근할 수 있습니다.

'Spring > 이론' 카테고리의 다른 글

[Spring] POST요청  (0) 2025.02.11
[Spring] Autowired  (0) 2025.02.10
[Spring] Annotation  (0) 2025.02.10
[Spring] 기초 이론  (0) 2025.02.10
[Spring] 초기 세팅  (0) 2025.02.10