Intro::
@Configuration(proxyBeanMethods = false) μ λν μ 리본μ
λλ€.
κΈ°λ³Έμ μΈ @Configuration λμ λ°©μ
Springμ @Configuration ν΄λμ€λ₯Ό μ²λ¦¬ν λ, νλ‘μ(proxy) ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ΄ ν΄λμ€μ λ©μλ νΈμΆμ κ°λ‘μ±κ³ κ΄λ¦¬ν©λλ€. μ΄λ μ€νλ§μ λΉ λ±λ‘ κ³Όμ μμ μ€μν μν μ ν©λλ€.
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
@Bean
public MyRepository myRepository() {
return new MyRepository();
}
}
Bash
볡μ¬
AppConfig ν΄λμ€λ μ€νλ§μ μν΄ νλ‘μλ‘ λνλ©λλ€. μ΄λ κ² νλ©΄ myService()μ myRepository() λ©μλ νΈμΆμ΄ νλ‘μλ₯Ό ν΅ν΄ μ²λ¦¬λλ©°, λμΌν λΉ μΈμ€ν΄μ€κ° λ°νλ©λλ€.
proxyBeanMethods μ€μ μ΅μ
proxyBeanMethods μ€μ μ΅μ
μ μ΄λ¬ν νλ‘μ λμμ μ μ΄νλ λ° μ¬μ©λ©λλ€.
proxyBeanMethods = true (κΈ°λ³Έκ°)
β’
νλ‘μ λ©μλλ₯Ό μ¬μ©νμ¬ @Bean λ©μλλ₯Ό νΈμΆν©λλ€.
β’
λ©μλ νΈμΆμ κ°λ‘μ±κ³ λμΌν λΉ μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€.
β’
μ΄λ @Bean λ©μλ κ°μ μμ‘΄μ±μ μ²λ¦¬νλ λ° μ μ©ν©λλ€.
proxyBeanMethods = false
β’
νλ‘μ λ©μλλ₯Ό μ¬μ©νμ§ μμ΅λλ€.
β’
@Bean λ©μλκ° νΈμΆλ λλ§λ€ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€.
β’
μ΄λ λ©μλ νΈμΆμ κ°λ‘μ±μ§ μκΈ° λλ¬Έμ μ±λ₯ μ΅μ νμ λμμ΄ λ©λλ€.
proxyBeanMethods = false μ¬μ© μμ
proxyBeanMethods = false μ€μ μ νλ‘μ λ©μλ νΈμΆμ΄ νμνμ§ μκ±°λ, @Bean λ©μλ κ°μ μμ‘΄μ±μ΄ μμ λ μ¬μ©λ©λλ€.
@Configuration(proxyBeanMethods = false)
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
@Bean
public MyRepository myRepository() {
return new MyRepository();
}
}
Bash
볡μ¬
μ΄ μ€μ μμλ myService()μ myRepository() λ©μλκ° νΈμΆλ λλ§λ€ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό λ°ννλ©°, νλ‘μλ₯Ό μ¬μ©νμ§ μκΈ° λλ¬Έμ μ½κ°μ μ±λ₯ ν₯μμ΄ μμ μ μμ΅λλ€.
μ£Όμμ¬ν
β’
proxyBeanMethods = falseλ₯Ό μ¬μ©νλ©΄ @Bean λ©μλ κ°μ νΈμΆμ΄ νλ‘μλ‘ μ²λ¦¬λμ§ μκΈ° λλ¬Έμ, λΉ κ°μ μμ‘΄μ±μ΄ μλ κ²½μ° μ£Όμν΄μΌ ν©λλ€.
β’
μλ₯Ό λ€μ΄, ν @Bean λ©μλκ° λ€λ₯Έ @Bean λ©μλλ₯Ό νΈμΆνμ¬ ν΄λΉ λΉμ μ°Έμ‘°νλ κ²½μ°, proxyBeanMethods = false μ€μ μ νμ μλ‘μ΄ μΈμ€ν΄μ€κ° μμ±λ©λλ€.
κ²°λ‘
β’
proxyBeanMethods = true (κΈ°λ³Έκ°): μ€νλ§μ νλ‘μλ₯Ό μ¬μ©νμ¬ @Bean λ©μλ νΈμΆμ κ°λ‘μ±κ³ λμΌν λΉ μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€. μ΄λ λΉ κ°μ μμ‘΄μ±μ μ²λ¦¬νλ λ° μ μ©ν©λλ€.
β’
proxyBeanMethods = false: νλ‘μλ₯Ό μ¬μ©νμ§ μμΌλ©°, λ©μλ νΈμΆ μ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€. μ΄λ νλ‘μ μ€λ²ν€λλ₯Ό μ€μ¬ μ±λ₯ μ΅μ νλ₯Ό λλͺ¨ν μ μμ§λ§, λΉ κ°μ μμ‘΄μ±μ΄ μλ κ²½μ° μ£Όμκ° νμν©λλ€.
proxyBeanMethods = falseλ₯Ό μ¬μ©νλ κ²μ νΉμ μν©μμ μ μ©ν μ μμ§λ§, λΉ κ°μ μμ‘΄μ±μ΄ μλ κ²½μ°μλ κΈ°λ³Έκ°μ μ¬μ©νλ κ²μ΄ μΌλ°μ μΌλ‘ λ μμ ν©λλ€.