Backend/SpringBoot

Bean 어노테이션 (W.Configuration, Component 어노테이션)

Dean83 2024. 10. 25. 14:17
  • Bean 어노테이션은 DI 를 위해 사용되는 어노테이션으로, 스프링부트 내부에 해당 어노테이션이 있는 클래스 내 함수를 등록해 두고, 사용처에서 @Autowired 등으로 인젝션 받아 사용할 수 있도록 한다. 
  • Bean 등록을 위해서는 두가지 방법이 있다.
    • @Component 클래스 어노테이션 사용
    • @Configuration 어노테이션 + @Bean 메소드 어노테이션 사용 
      • 단, Configuration 은 설정 관련 어노테이션이다. 
      • Configuration 은 싱글톤으로 사용하는것이 대부분 이므로, Bean 어노테이션을 사용한다.
    • 일반 커스텀 클래스를 등록하려면 Component 클래스 어노테이션을 쓰자
  • Configuration 에서 사용할 클래스 예 (Bean으로 등록하는 대상이 됨)
package com.example.test1.test1;

public class CommonTestClass {

    public String GetStringTest()
    {
    	return "Test";
    }
}
  • Configuration, Bean 선언부 
package com.example.test1.test1;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

@Configuration
@EnableWebSecurity
public class security {

    @Bean
    public CommonTestClass BeanTest()
    {
        CommonTestClass testClass = new CommonTestClass();
        return testClass;
    }
    
}

 

  • 호출부
package com.example.test1.test1;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;


@Controller
public class javacontroller2 {

    
    private final CommonTestClass testClass;
    public javacontroller2(CommonTestClass sv)
    {
        testClass = sv;
    }

    @GetMapping("/java")
    public String controllerTest(@RequestAttribute("name") String name) {
               
        return testClass.GetStringTest();
    }
    
}

 

 

  • Component 어노테이션 예
    • 클래스어 Component 어노테이션을 붙이면 Bean으로 등록되어 다른곳에서 인젝션 받아 쓸 수 있다.
@Component
public class TestClass
{
	....
    public void testMethod()
    {
    	...
    }
}

'Backend > SpringBoot' 카테고리의 다른 글

테스트 코드 작성과 TDD  (2) 2024.10.29
Query 어노테이션(JPQL) 및 JPA의 Specification  (0) 2024.10.25
Spring Security 기본 설정  (0) 2024.10.25
DTO (W. Data, Build 어노테이션)  (0) 2024.10.24
Paging  (0) 2024.10.24