Spring Boot で ApplicationContext を初期化せずに application.properties の内容を取得する

このへんのソースを読むと、一応以下のように書けるっぽい?

なんか目的外使用っぽくてよくないですけど。

StandardEnvironment env = new StandardEnvironment();
new ConfigFileApplicationListener().postProcessEnvironment(env, new SpringApplication());

log.info("{}", env.getProperty("spring.datasource.url"));

ちなみにやりたかったことは、テストコードで ApplicationContext を利用せずに MyBatis の mapper を利用したかった。

StandardEnvironment env = new StandardEnvironment();
new ConfigFileApplicationListener().postProcessEnvironment(env, new SpringApplication());

DataSource dataSource = DataSourceBuilder.create()
        .type(Class.forName(env.getProperty("spring.datasource.type")).asSubclass(DataSource.class))
        .url(env.getProperty("spring.datasource.url"))
        .username(env.getProperty("spring.datasource.username"))
        .password(env.getProperty("spring.datasource.password"))
        .driverClassName(env.getProperty("spring.datasource.driver-class-name"))
        .build();

Configuration mybatisConf = new Configuration(new Environment("test", new JdbcTransactionFactory(), dataSource));
mybatisConf.setMapUnderscoreToCamelCase(true);
mybatisConf.addMapper(HogeHogeMapper.class);

SqlSession sqlSession = new SqlSessionFactoryBuilder()
        .build(mybatisConf)
        .openSession();
try {
    HogeHogeMapper mapper = sqlSession.getMapper(HogeHogeMapper.class);

    // ...
} finally {
    sqlSession.close();
}

でもここまで書いて結果的には利用しなかった。