- 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";
}
}
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()
{
...
}
}