728x90
반응형
#스프링 Bean 등록(Annotation, XML) 하는 방법
#Annotation
@Component : bean으로 등록
bean등록 어노테이션
@Controller : 요청과 응답처리
@Repository : DAO(파일, 데이터베이스)
@Service : Command(비즈니스 로직)
#@Component
package org.green.di_test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/*
* Annotation
* @Component : bean으로 등록
*
* bean등록 어노테이션
* @Controller :
* @Repository : DAO
* @Service : Command
*
*/
// 단순 @Component로 등록하면 xml과 비교해서 어떻게 식별(ID)할까 ?
// == <bean id="some" class="org.green.di_test.Some" />
//@Component("someObj") // 컴포넌트의 이름을 임의로 지정
@Component
public class Some {
// @Value("test") // 값을 임의로 저장
private String contents;
public Some() {
}
public Some(String contents) {
super();
this.contents = contents;
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
@Override
public String toString() {
return "Some [contents=" + contents + "]";
}
}
@Autowired
-정밀한 의존관계 주입이 필요한 경우에 유용하다.
-프로퍼티, setter 메서드, 생성자, 일반 메서드에 적용 가능하다.
-의존하는 객체를 주입할 때 주로 Type을 이용한다.
-<property>, <contructor-arg> 태그와 동일한 역할을 한다.
@Resource
-애플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용한다.
-@Resource는 poperty, setter 메서드에 적용 가능하다.
-의존하는 객체를 주입할 때 주로 Name을 이용한다.
@Value
-단순한 값을 주입할 때 사용되는 annotation.
-@Value("Spring")은 <property .. value="Spring" />와 동일한 역할을 한다.
@Qualifier
-@Autowired annotation와 함께 사용합니다.
-@Autowired는 타입으로 찾아서 주입하므로, 동일 타입의 Bean 객체가 여러 개 존재할 때 특정 Bean을 찾기
위해 사용한다.
#어노테이션으로 빈 등록
package org.green.di_test;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
// @Autowired
// 스프링 프레임워크에서 관리하는 Bean 객체와 같은 타입의 객체를 찾아서 자동으로 주입해주는 것.
// 해당 객체를 Bean으로 등록하지 않으면 주입해줄 수 없다.
// root-context.xml에 등록
// @Qualifier : 같은 객체가 복수일때 임의로 지정가능
@Autowired
@Qualifier("mySome") // 타입이 같은 빈이 있을 경우 조금 더 딮하게 찾을때 사용
private Some some;
@Autowired
private Other obj;
// IAnimal은 인터페이스
// 빈으로 등록 되어있지않다.
// 다형성을 기반으로 자동으로 구현하고있는 모든객체를 잡아준다.
@Autowired
private IAnimal myCat;
// has a
// @RequestMapping(value = "/", method = RequestMethod.GET)
// public String home() {
// System.out.println(obj);
// return "home";
// }
// 인터페이스 방식
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home() {
myCat.cry();
return "home";
}
}
#XML로 빈 등록 (root-context.xml)
<?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 https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 모든 웹 Component들이 공유할 수 있는 리소스 -->
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="some" class="org.green.di_test.Some" />
<!-- DI(has a관계) -->
<!-- 생성자로 전달 -->
<bean id="mySome" class="org.green.di_test.Some" >
<constructor-arg value="java" />
</bean>
<!-- property == setter로 전달 -->
<bean id="yourSome" class="org.green.di_test.Some">
<property name="contents" value="JSP" />
</bean>
<!-- 객체로 된 멤버변수 <bean>태그 안에 공백이면 기본 생성자 호출 -->
<!-- 멤버변수 some에 + yourSome 넣기 -->
<bean id="obj" class="org.green.di_test.Other">
<property name="some" ref="yourSome" />
</bean>
<bean id="myCat" class="org.green.di_test.Cat"></bean>
<bean id="myDog" class="org.green.di_test.Dog"></bean>
<!-- 객체가 배열일때 -->
<bean id="ball1" class="org.green.di_test.Ball">
<constructor-arg value="1" />
</bean>
<bean id="ball2" class="org.green.di_test.Ball">
<constructor-arg value="2" />
</bean>
<bean id="ball3" class="org.green.di_test.Ball">
<constructor-arg value="3" />
</bean>
<!-- 멤버변수가 배열일때 -->
<!-- <list> 배열이나 콜랙션 사용할때 -->
<!-- property <-setter가 있어야함 -->
<bean id="myBasket" class="org.green.di_test.BallBasket">
<!-- 일반배열(arr[]) -->
<property name="arr">
<list>
<value>first</value>
<value>second</value>
<value>third</value>
</list>
</property>
<!-- 객체배열이나 list(ball[]) -->
<property name="list">
<list>
<ref bean="ball1" />
<ref bean="ball2" />
<ref bean="ball3" />
</list>
</property>
<!-- set형태 -->
<!-- <property name=""> -->
<!-- <set> -->
<!-- <ref bean="ball1" /> -->
<!-- <ref bean="ball2" /> -->
<!-- <ref bean="ball3" /> -->
<!-- </set> -->
<!-- </property> -->
<!-- map형태 -->
<!-- <property name=""> -->
<!-- <map> -->
<!-- <entry key="ball1" value-ref="ball1" /> -->
<!-- <entry key-ref="id" value-ref="id" /> -->
<!-- </map> -->
<!-- </property> -->
</bean>
</beans>
1. BallBasket.java
package org.green.di_test;
import java.util.Arrays;
public class BallBasket {
private String[] arr;
private Ball[] list;
public BallBasket() {
super();
}
public BallBasket(String[] arr) {
super();
this.arr = arr;
}
public String[] getArr() {
return arr;
}
public void setArr(String[] arr) {
this.arr = arr;
}
public Ball[] getList() {
return list;
}
public void setList(Ball[] list) {
this.list = list;
}
@Override
public String toString() {
return "BallBasket [arr=" + Arrays.toString(arr) + "]";
}
}
2. Ball.java
package org.green.di_test;
public class Ball {
private int num;
public Ball() {
}
public Ball(int num) {
super();
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "Ball [num=" + num + "]";
}
}
728x90
반응형
'IT > Spring' 카테고리의 다른 글
[Spring] - 스프링 Model, ModelMap, ModelAndView 차이점 (0) | 2020.09.15 |
---|---|
[Spring] - 스프링 Spring JDBC (DBCP 커넥션 풀) 설정 하는 방법 (0) | 2020.08.19 |
[Spring] - 스프링 @RequestMapping 어노테이션 사용 방법 (0) | 2020.08.13 |
[Spring] - 스프링 Maven Repository에서 mysql 라이브러리 적용 하는 법 (0) | 2020.08.13 |
[Spring] - 스프링 한글 처리 하는 방법(web.xml) (0) | 2020.08.13 |
댓글