개발자 미니민의 개발스터디

[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

활동하기