如何将Spring Boot配置为不连接数据库

时间:2018-09-02 14:28:57

标签: spring-boot jpa jdbc datasource

请注意:这个问题不是重复的,我什至在下面引用了另一个类似的问题。我断言我的情况与提到的其他问题完全不同。


我正在站一个不受任何数据库,JDBC或RDBMS数据源支持的Spring Boot Web服务。

启动时出现错误:

Cannot determine embedded database driver class for database type NONE

在这里,我看到一个very similar question here,其中接受的答案如下:

  

您没有为Spring Boot提供足够的信息来自动配置DataSource

...然后继续说明如何在应用配置文件中设置适当的值:

spring.datasource.url = ...
spring.datasource.driver-class-name = ...

但是,如果我不想要任何任何数据源怎么办?!在另一个问题中,用户正在通过DataNucleus连接到NoSQL。就我而言,(至少目前)我对连接任何类型的数据源不感兴趣(此服务的所有数据都将来自其他基于云的REST服务)。 / p>

这里的解决方法是什么?

1 个答案:

答案 0 :(得分:3)

根据the documentation,您可以通过从Spring Boot为您执行的自动配置中排除pattern来关闭此行为。

if let html = String(data:data, encoding: .utf8) {
    let pattern = "data-api-data=\"([^\"]*)\""
    let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
    let matches = regex.matches(in: html, range: NSRange(0..<html.utf16.count)) //<-USE html.utf16.count, NOT html.count
    var results: [String] = []
    matches.forEach {match in
        let propValue = html[Range(match.range(at: 1), in: html)!]
            //### You need to replace character entities into actual characters
            .replacingOccurrences(of: "&quot;", with: "\"")
            .replacingOccurrences(of: "&apos;", with: "'")
            .replacingOccurrences(of: "&gt;", with: ">")
            .replacingOccurrences(of: "&lt;", with: "<")
            .replacingOccurrences(of: "&amp;", with: "&")
        results.append(propValue)
    }
    if let stringJSON = results.first {
        let dataJSON = stringJSON.data(using: .utf8)!
        do {
            let json = try JSONSerialization.jsonObject(with: dataJSON)
            print(json)
        } catch {
            print(error) //You should not ignore errors silently...
        }
    } else {
        print("NO result")
    }
}

更新为回答问题:通过使用DataSourceAutoConfiguration,它会自动拉入@Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { // ... } ,如果它在类路径中看到jdbc jar,则会添加/执行{{ 1}}。上面的代码关闭了此行为。