문제발생

yml 파일로 환경변수를 분리하려고 했다.

@Configuration
@ConstructorBinding
@RequiredArgsConstructor
@ConfigurationProperties(prefix = "selenium")
public class SeleniumConfig {

    private final String driverName;

    public ChromeDriver chromeDriver() {
        System.setProperty("webdriver.chrome.driver", driverName);
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        ChromeDriver driver = new ChromeDriver(options);
        driver.manage().timeouts().implicitlyWait(Duration.ofMinutes(3));
        driver.manage().window().maximize();
        return driver;
    }
}

@ConfigurationProperties 로 yml 값을 불러오고 @ConstructorBinding 으로 값도 바인딩 했다.

이제 Application 클래스로 가서 @EnableConfigurationProperties 로 config 파일만 설정해주면 되겠지 싶었다.

하지만 Application 클래스의 설정을 해주니 아래와 같은 에러창이 나를 맞아주었다.

 

 

문제해결

@Configuration 때문에 발생한 에러였다.

 Application 클래스로의 @EnableConfigurationProperties config 파일의 빈 등록을 해주기 때문에

@Configuration 을 달면 위와 같은 오류가 발생하는 것이었다.

그러므로 아래처럼 @Configuration 을 빼주면 정상 동작한다.

@ConstructorBinding
@RequiredArgsConstructor
@ConfigurationProperties(prefix = "selenium")
public class SeleniumConfig {

    private final String driverName;

    public ChromeDriver chromeDriver() {
        System.setProperty("webdriver.chrome.driver", driverName);
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        ChromeDriver driver = new ChromeDriver(options);
        driver.manage().timeouts().implicitlyWait(Duration.ofMinutes(3));
        driver.manage().window().maximize();
        return driver;
    }
}

 

 

+ Recent posts