✅ Java-based Configuration
Java-based configuration은 자바 코드를 사용하여 빈을 구성하는 방식입니다. 주로 @Configuration
어노테이션과 함께 사용됩니다. @Configuration
어노테이션이 적용된 클래스는 빈 구성을 위한 설정 클래스로 인식되며, @Bean
어노테이션을 사용하여 개별 빈을 정의합니다. 자바 코드를 통해 Spring IoC Container에게 관리할 객체에 관한 메타데이터를 전달할 수 있습니다.
- Example : Java-based Configuration
@Configuration public class AppConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
위의 예시에서
AppConfig
클래스는@Configuration
어노테이션이 적용된 Java-based configuration 클래스입니다.userService()
메소드는@Bean
어노테이션을 사용하여UserService
인터페이스의 구현체를 반환하는 빈을 정의합니다. 이를 통해 Spring IoC Container가 메소드 이름을 key로 반환된 객체를 value로 하는 Map 형태로 관리할 수 있게 됩니다.
✅ Annotation-based Configuration
Annotation-based configuration은 주로 어노테이션을 사용하여 빈을 구성하는 방식입니다. Spring Framework은 다양한 어노테이션을 제공하여 빈을 정의하고 의존성 주입을 처리할 수 있습니다. 주요 어노테이션으로는 @Component
, @Autowired
, @Service
, @Repository
, @Controller
등이 있습니다. 어노테이션 자체로 설정에 관한 메타데이터를 Spring IoC Container에게 전달할 수 있습니다.
- Example : Annotation-based Configuration
@Service public class UserServiceImpl implements UserService { // ... }
위의 예시에서
UserServiceImpl
클래스에@Service
어노테이션이 적용되어 있습니다. 이는UserServiceImpl
을 Spring의 빈으로 등록하는 역할을 합니다.
✅ XML Bean 설정 방식
XML 설정 방식은 Spring Framework에서 오랫동안 사용되어온 전통적인 설정 방식입니다. XML 파일을 사용하여 빈의 정의와 의존성 주입, 프로퍼티 설정 등을 구성합니다.
- Example : XML
<!-- applicationContext.xml --> <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 http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 빈 정의 --> <bean id="userService" class="com.example.UserService"> <!-- 프로퍼티 설정 --> <property name="userRepository" ref="userRepository"/> </bean> <bean id="userRepository" class="com.example.UserRepository"/> </beans>
위의 예시에서는
<beans>
요소로 빈 설정 파일을 시작합니다.<bean>
요소를 사용하여 빈의 정의를 작성합니다.id
속성은 빈의 식별자를 나타내며,class
속성은 해당 빈의 클래스 경로를 지정합니다.<property>
요소를 사용하여 프로퍼티를 설정하고,ref
속성을 사용하여 다른 빈을 참조할 수 있습니다.
👉최근에는 Java-based configuration과 Annotation-based configuration이 XML 설정 방식의 대안으로 많이 사용되고 있으며, 이들 방식은 XML 설정의 번거로움과 복잡성을 줄여 개발자들에게 더 편리한 구성 방식을 제공합니다.
🏷️이미지 출처 및 참고한 사이트
Uploaded by N2T