도담이 먹여 살려야하는 집사

JAVAConfig[ApplicationConfig/DBConfig] 본문

Spring

JAVAConfig[ApplicationConfig/DBConfig]

천재도담 2020. 12. 1. 10:23

Java Config 이용 설정을 위한 Annotation 

@Configuration

  • 스프링 설정 클래스를 선언하는 어노테이션
  • java config로 설정을 할 클래스 위에는 @Configuration 이 붙어 있어야 함.

@Bean

  • bean을 정의하는 어노테이션

@ComponentScan

  • @Controller, @Service, @Repository, @Component 어노테이션이 붙은 클래스를 찾아 컨테이너에 등록

@Component

  • 컴포넌트 스캔의 대상이 되는 애노테이션 중 하나로써 주로 유틸, 기타 지원 클래스에 붙이는 어노테이션

@Autowired

  • 주입 대상이 되는 bean을 컨테이너에 찾아 주입하는 어노테이션

ApplicationConfig

스프링 설정 클래스

package kr.or.connect.guestbook.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Configuration @ComponentScan(basePackages = {"kr.or.connect.guestbook.dao","kr.or.connect.guestbook.service"}) @Import({DBConfig.class}) public class ApplicationConfig { }

package kr.or.connect.guestbook.config; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Import; 

@Configuration 
@ComponentScan(basePackages = {"kr.or.connect.guestbook.dao","kr.or.connect.guestbook.service"}) 
@Import({DBConfig.class}) 
public class ApplicationConfig { }

ApplicationContext

  • AnnotationConfigApplicationContext

    JavaConfig클래스를 읽어드려 IoC와 DI를 적용

    설정 파일 중 @Bean이 붙어 있는 메소드들을 자동으로 실행 >> 그 결과로 리턴하는 객체들을 기본적으로 싱글톤으로 관리

DBConfig

Maven에 Spring JDBC 의존성을 먼저 추가해준다

@Configuration
@EnableTransactionManagement
@PropertySource(value = {"classpath:application.properties"})
public class DBConfig {
}

@Configuration 은 위에 설명되어있음.

@EnableTransactionManagement

  • 트랜잭션과 관련된 설정들을 자동으로 처리해준다.
  • Platform TransactionManager 구현체를 모두 찾아서 그중 하나를 매핑해서 사용하는 것이다.
  • 특정 트랜잭션 매니저를 사용하고자 한다면 TransactionManagermemtConfigure을 구현하고 원하는 트랜잭션 매니저를 리턴하면 된다.

@PropertySource(value = {"classpath:application.properties"})

  • 스피링의 application.properties라는 속성 파일을 사용
  • 이 경우, 소스 코드에 DB접속정보를 하드 코딩할 필요가 없어짐
  • main/resources/application.properties에 작성하면 됨
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/[DATABASENAME]?useUnicode=true&characterEncoding=utf8
spring.datasource.username=[MysqlUserName]
spring.datasource.password=[MysqlPWD]

위의 속성 파일을 사용할 경우, java config인 annotation으로 가져올 수 있다.

@PropertySource(value = {"classpath:application.properties"})
public class DBConfig implements TransactionManagementConfigurer {
    
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String userName;
    @Value("${spring.datasource.password}")
    private String password;

@Value로 접근해서 가져온다

또, 스프링 환경 변수를 설정하면 시스템 프로퍼티로 사용이 가능하다.

pjh3749.tistory.com/216

 

[Spring] 스프링 Properties 관리하기

* 스프링 Properties 정의하기 스프링 resource폴더 안에 datasource.properties를 정의해주고 그 안에 값들을 정의해 준다. 이 값들은 java config인 annotation으로 가져올 수 있다. 1 2 3 4 5 6 7 8 9 10 11 1..

pjh3749.tistory.com

EditConfigurations >> Application 템플릿에서 Environment variavles에서 변수를 설정해준다.

여기서 변수들은 application.properties에서 설정해준 변수들을 넣으면 된다.

@Autowired
    Environment environment;

@Autowired를 선언해 준 후,

        dataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));
        dataSource.setUrl(environment.getProperty("spring.datasource.url"));
        dataSource.setUsername(environment.getProperty("spring.datasource.username"));
        dataSource.setPassword(environment.getProperty("spring.datasource.password"));

environment.getProperty 로 id, url, pwd를 불러올 수 있다.

DBConfig에 implements TransactionManagementConfigurer는 원하는 트랜잭션 매니저를 리턴하기 위함이다.

또 밑에 코드는 드라이버 로드 및 connection에 사용되는 url, name, pwd이다 >> JDBC

@Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        return dataSource;
    }

DataSourcee빈을 등록해준다. 

'Spring' 카테고리의 다른 글

[Spring Security] Security Config - Swagger Url  (0) 2020.12.28
JavaConfig2[SwaggerConfig/WebMvcContextConfiguration]  (0) 2020.12.21
[Spring] Container & Ioc & DI  (0) 2020.10.26
Spring Framework?  (0) 2020.10.26
Comments