Gradle에서 Transitive Dependency를 제거하기 위해 다음과 같이 한다.


dependencies {

    compile("de.codecentric:spring-boot-admin-server:1.1.0") {

        exclude module: "jquery"

        exclude module: "angularjs"

    }


    compile("org.webjars:jquery:1.11.0")

    compile("org.webjars:angularjs:1.2.12")

}


exclude module 값으로 Artifact 이름을 설정함에 유의한다.


Reference:

http://forums.gradle.org/gradle/topics/how_to_exclude_transitive_dependency

저작자 표시

Posted by izeye

스프링 부트에서 프로퍼티 파일을 자바 클래스에 바인딩하기 위해


@ConfigurationProperties 애노테이션 (Annotation)을 사용할 수 있다.


프로퍼티 파일에 다음과 같이 작성한다.


mybatis.driver-class-name=com.mysql.jdbc.Driver

mybatis.url=jdbc:mysql://localhost/test

mybatis.username=test

mybatis.password=test


mybatis.config-location=classpath:mybatis/sqlmap-config.xml

mybatis.mapper-locations=classpath:mybatis/mappers/*.xml


바인딩할 클래스에 다음과 같이 @ConfigurationProperties 애노테이션을 추가한다.


@ConfigurationProperties(prefix = "mybatis")

public class MyBatisProperties {


private String driverClassName;

private String url;

private String username;

private String password;


private Resource configLocation;

private Resource[] mapperLocations;


public String getDriverClassName() {

return driverClassName;

}


public void setDriverClassName(String driverClassName) {

this.driverClassName = driverClassName;

}


public String getUrl() {

return url;

}


public void setUrl(String url) {

this.url = url;

}


public String getUsername() {

return username;

}


public void setUsername(String username) {

this.username = username;

}


public String getPassword() {

return password;

}


public void setPassword(String password) {

this.password = password;

}


public Resource getConfigLocation() {

return configLocation;

}


public void setConfigLocation(Resource configLocation) {

this.configLocation = configLocation;

}


public Resource[] getMapperLocations() {

return mapperLocations;

}


public void setMapperLocations(Resource[] mapperLocations) {

this.mapperLocations = mapperLocations;

}


}


다음과 같이 활용할 수 있다.


@Configuration

public class MyBatisConfig {


@Autowired

private MyBatisProperties properties;


@Bean

public DataSource dataSourceForMyBatis() {

BasicDataSource dataSource = new BasicDataSource();

dataSource.setDriverClassName(properties.getDriverClassName());

dataSource.setUrl(properties.getUrl());

dataSource.setUsername(properties.getUsername());

dataSource.setPassword(properties.getPassword());

return dataSource;

}


@Bean

public SqlSessionFactoryBean sqlSessionFactoryForMyBatis(DataSource dataSource) {

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

sqlSessionFactoryBean.setDataSource(dataSource);

sqlSessionFactoryBean.setConfigLocation(properties.getConfigLocation());

sqlSessionFactoryBean.setMapperLocations(properties.getMapperLocations());

return sqlSessionFactoryBean;

}


@Bean

public SqlSession sqlSessionForMyBatis(SqlSessionFactory sqlSessionFactory) {

return new SqlSessionTemplate(sqlSessionFactory);

}


}


다음과 같이 @EnableConfigurationProperties 애노테이션으로 해당 프로퍼티 클래스를 등록해야 함에 유의한다.


@SpringBootApplication

@EnableConfigurationProperties(MyBatisProperties.class)

public class SampleMyBatisApplication {

...

}


Reference:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

저작자 표시

Posted by izeye


티스토리 툴바