6/12 월 Spring Injection

konut ko·2023년 6월 12일
1

더존비즈온5기

목록 보기
32/46

spring 통해서 객체의 생성과 조립(injection)을 할 수 있다.

1. xml 설정을 통해서 bean 생성, injection 할 수 있다.

2. xml 문서 없이도 가능하다.

  • 자바코드를 이용해서 설정작업을 해야한다.
  • 방법 : JAVA 파일 + Annotation
    (xml 파일은 아예 없어도 되나봄)

3. 기존 xml vs 현재 JAVA

기존 xml

ApplicationContext context =  
new GenericXmlApplicationContext("classpath:ApplicationContext04.xml");

현재 java

new AnnotationConfigApplicationContext()

ConfigContext.java 파일이 xml 대체함.
이 파일에서 bean 만듦.

좋은설명이 있어서 가져왔습니다.

injection 방법은 Annotation!

사용하는 어노테이션은 ...

1. @Configuration

:해당 클래스가 [스프링의 설정]으로 사용됨을 지정 (xml을 대체 할 거야)

ex)

  @Configuration
  public class configcontext {}

2. @Bean

 <bean id="user" class="DI.User">

xml 에서 위 코드과 같은 형태를 아래 코드처럼 함수(method) 의 형태로 설계

ex

  @Configuration
    public class configcontext {
       @Bean
       public User user(){
         return new User();
       }

result

  • 어노테이션과 [메서드 이름]을 이용해서 스프링 컨테이너가 사용할 빈 객체를 설정한다.
  • 메서드가 리턴하는 객체를 bean객체로 사용하겠다.

연습 1

  • java
class MemberRegisterService{
   private MemberDao memberdao;
   public MemberRegisterService(MemberDao memberdao){ 
   				//MemberRegisterService는 MemberDao에 의존합니다. 생성자로 주입받습니다. 
      this.memberdao = memberdao;
   }
}

xml에서 설정한다면

<bean id="memberdao" class="MemberDao" />
<bean id="memberRegSvc" class="MemberRegisterService">
     <constructor-arg  ref="memberdao">
</bean>

@Autowired 를 추가하게 되면

  • java
class MemberRegisterService{
   private MemberDao memberdao;
   @Autowired
   public MemberRegisterService(MemberDao memberdao){
      this.memberdao = memberdao;
   }

}
  • xml 문서
<context:annotation-config />   
<bean id="memberRegSvc" class="MemberRegisterService"></bean>
<bean id="memberdao" class="MemberDao" />

@Configuration @bean 두개를 추가하게 되면

(java 코드 기반의 작업)

  • java
@Configuration
class Configcontext{
         @bean
         public MemberRegisterService memberRegSvc(){
           return new MemberRegisterService(memberdao()); //함수를 통한 주입
         } 
         @bean
         public MemberDao memberdao(){
          return new MemberDao();
         }
   }
옵션 :
<bean id="m" class="board"></bean>

=> 자바코드
@bean
public board m(){
  return new board();
}
옵션_1
@bean(name="hello")
public board m(){
  return new board();
}
profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글