CloudFoundry MySQL Java配置

CloudFoundry MySQL Java配置,mysql,spring,spring-mvc,cloud,cloud-foundry,Mysql,Spring,Spring Mvc,Cloud,Cloud Foundry,我有一个SpringMVC应用程序,在本地tomcat等上运行良好。它是Spring3.1MVC/Hibernate应用程序 我正在为应用程序使用(如果可能的话)纯Java@Configuration,现在我正在尝试将应用程序部署到CloudFoundry(通过STS),但我正在努力配置MySql数据库(从内存来看,使用xml配置,您不需要做任何事情,Spring/CloudFoundry自动注入所需的用户/密码等,但我已经有一段时间没有将任何东西部署到CF了) 我已尝试了以下两种配置: @Be

我有一个SpringMVC应用程序,在本地tomcat等上运行良好。它是Spring3.1MVC/Hibernate应用程序

我正在为应用程序使用(如果可能的话)纯Java@Configuration,现在我正在尝试将应用程序部署到CloudFoundry(通过STS),但我正在努力配置MySql数据库(从内存来看,使用xml配置,您不需要做任何事情,Spring/CloudFoundry自动注入所需的用户/密码等,但我已经有一段时间没有将任何东西部署到CF了)

我已尝试了以下两种配置:

@Bean
public BasicDataSource dataSource() throws PropertyVetoException {
    //CloudFoundry config
    final CloudEnvironment cloudEnvironment = new CloudEnvironment();
        final List<MysqlServiceInfo> mysqlServices = cloudEnvironment.getServiceInfos(MysqlServiceInfo.class);
        final MysqlServiceInfo serviceInfo = mysqlServices.get(0);

    BasicDataSource bean = new BasicDataSource();
    bean.setDriverClassName("com.mysql.jdbc.Driver");
    bean.setUrl(serviceInfo.getUrl());
    bean.setUsername(serviceInfo.getUserName());
    bean.setPassword(serviceInfo.getPassword());
    return bean;
}

编辑


我还使用了getServiceInfo(String,Class)方法,传入我创建并绑定到应用程序的MySql服务的名称,但这只是与getServiceInfos(..)方法类似的NPE好吧,这只是一个愚蠢的错误——当我通过STS部署应用程序时,我选择了Java Web应用程序,而不是“Spring”类型。不确定为什么这会导致CloudEnvironment属性不可用(我的印象是,在非Spring应用程序中注入细节的方法是常用的)-但将其作为Spring应用程序重新部署到服务器解决了问题!

好的,这只是一个愚蠢的错误-当我通过STS部署应用程序时,我选择了Java Web应用程序而不是“Spring”类型。不确定为什么这会使CloudEnvironment属性不可用(我的印象是,这种方法是在非Spring应用程序中注入细节的常用方法)-但将其作为Spring应用程序重新部署到服务器解决了问题

@Bean
public BasicDataSource dataSource() throws PropertyVetoException {
    BasicDataSource bean = new BasicDataSource();
    bean.setDriverClassName("com.mysql.jdbc.Driver");
    bean.setUrl("");
    bean.setUsername("spring");
    bean.setPassword("spring");
    return bean;
}