[spring] 자바 기반 Bean 설정 Configuration
by mini_min[spring] 자바 기반 Bean 설정 Configuration
✔️ @Configuration : 자바 클래스를 스프링 환경설정 파일로 인식
: XML이 아닌 자바코드를 이용하여 생성할 빈 객체 그리고 각 빈과의 연관 등을 처리할 수 있다.
-- User 객체 만든다. @Service 애노테이션
-- UserServiceImpl 객체 만든다.
@Service //User객체 만듬 public class User { @Autowired //타입으로 의존성 private UserService service; public void write() { System.out.println("-- 자바로 환경설정 --"); System.out.println(service.message()); } }
@Service //객체 생성. Component 보다 일반적임. 일 하는 애한테 붙여주기 public class UserServiceImpl implements UserService { private @Value("가나다")String name; private @Value("20")int age; @Override public String message() { String s = name + " : " + age; s += age >= 19 ? "성인" : "미자"; return s; } }
@Configuration //스프링 환경 설정 파일 / 환경설정할 때 쓸 class @ComponentScan(basePackages = {"com.config.user1"}) // 어노테이션 활성화 public class SpringConfig { }
✨
public class User { @Autowired //타입으로 의존성 private UserService service; public void init() { System.out.println("초기화.."); } public void write() { System.out.println("-- 남들이 만든 클래스 객체 만들기... 자바로 환경설정 --"); System.out.println(service.message()); } public void destroy() { System.out.println("destroy..."); } }
public class UserServiceImpl implements UserService { private @Value("가나다")String name; private @Value("20")int age; @Override public String message() { String s = name + " : " + age; s += age >= 19 ? "성인" : "미자"; return s; } }
-- SpringConfig.java 파일
✨ 빈의 이름은 기본적으로 메소드명이다.
✨ @Bean
- @Component 와 마찬가지로 스프링 컨테이너에 Bean을 등록하도록 하는 애노테이션
- @Bean 애노테이션은 개발자가 직접 제어가 불가능한 외부 라이브러리를 빈으로 등록할 때 사용한다.
즉, 만약 개발자가 자신이 직접 작성한 클래스가 아닌 남이 작성한 클래스를 받아 빈으로 등록하려면....?.?
@Bean 애노테이션을 사용한다!
✨ 1개 이상의 @Bean 애노테이션을 사용한 클래스의 경우 반드시 @Configuration 을 명시해줘야한다.
@Configuration //스프링 환경 설정 파일 / 환경설정할 때 쓸 class @ComponentScan(basePackages = {"com.config.user2"}) // 어노테이션 활성화 public class SpringConfig { //@Bean : 외부 라이브러리의 객체를 생성해야 하는 경우에 사용한다!! // 하나 이상의 @Bean 이 있으면 @Configuration 이 필요하다. @Bean // 빈의 이름은 기본적으로 메소드명이다. public UserService userServiceDevice() { return new UserServiceImpl(); } @Bean(name = "user2.user", initMethod = "init", destroyMethod = "destroy") public User userDevice() { return new User(); } }
✔️ @PropertySource : 프로퍼티파일 읽기
@Configuration //스프링 환경 설정 파일 / 환경설정할 때 쓸 class @ComponentScan(basePackages = {"com.config.user3"}) // 어노테이션 활성화 @PropertySource("classpath:com/config/user3/main.properties") //프로퍼티파일 읽기 public class SpringConfig { }
//@Value("${프로퍼티이름}") => 프로퍼티의 값 반환하기 //@Value("${user.name}") => 컴퓨터사용자명이라 사용하면 안된다. @Service //객체 생성. Component 보다 일반적임. 일 하는 애한테 붙여주기 public class UserServiceImpl implements UserService { private @Value("${join.name}")String name; private @Value("${join.tel}")String tel; private @Value("${join.age}")int age; @Override public String message() { String s = name + " : " + tel + " : " + age; s += age >= 19 ? ", 성인" : ", 미자"; return s; } }
블로그의 정보
개발자 미니민의 개발로그
mini_min