在没有xml的spring boot中连接到mysql数据源
Posted
技术标签:
【中文标题】在没有xml的spring boot中连接到mysql数据源【英文标题】:connecting to mysql datasource in spring boot without xml 【发布时间】:2016-09-19 01:37:52 【问题描述】:我正在使用 Spring In Action 4 一书中的一些示例。
@Bean
public DataSource dataSource()
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("thetenticle.sql")
.build();
@Bean
public JdbcOperations jdbcTemplate(DataSource dataSource)
return new JdbcTemplate(dataSource);
该示例创建了一个可用于执行数据库操作的数据源。该示例使用嵌入式 h2 数据库。这对我没有用,因为我想远程连接到 mysql 数据库。我希望我可以连接一个 DataSource 对象,该对象具有我的数据库的连接详细信息。有没有办法我可以做到这一点。我对休眠或 xml 配置没有任何兴趣。我正在使用弹簧靴。
在过去的 18 小时里,我试图找到一个简单的示例,该示例创建一个 mysql 数据源而不是嵌入式 h2 并向数据库发送查询。我还没有找到一个这样的例子。一些网站建议将连接详细信息添加到 application.properties....但是我如何从中创建一个可以进行 sql 查询的数据源?
对不起我的无知,但我只需要一个简单的解释
【问题讨论】:
【参考方案1】:有关快速历史课程,请参见下文。
进行application.properties
设置,正如您在网上看到的许多示例中所述:
spring.datasource.url=jdbc:mysql://yourhost/yourdb
spring.datasource.username=youruser
spring.datasource.password=yourpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Spring 将为您创建一个DataSource
,假设您的类路径中有正确的 jar。如果您使用 Maven 或 Gradle 来构建您的应用程序,以下清单应该可以帮助您实现目标。
马文:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
分级:
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '1.3.5.RELEASE'
最后,让 AutoConfiguration 为您构建您的 JdbcOperations
对象(或者只是您的 DataSource
,如果您愿意的话)。你不需要做任何事情来创建它们,只需 @Autowired
将它们放入你的 Spring 托管 bean。
@Component
public class MyBean
@Autowired
private JdbcOperations jdbc;
public void doJdbcStuff()
// use jdbc
历史课
在早期,Spring 的目标是减少样板代码(这只是他们的众多目标之一)。他们以许多不同的方式做到了这一点,通过制作许多 API 的声明性、利用模板模式以及使配置用 Java 编写的应用程序变得容易。但在这个过程中,配置在许多大型应用程序中变成了怪物。他们很快意识到,他们已经将创建应用程序的大部分复杂性从应用程序的实际业务部分转移到了配置上。
这就是 SpringBoot 的用武之地,其目标是减少配置样板。有几种方法可以实现这一点,材料清单、AutoConfiguration 和 application.properties 配置是主要手段。
听起来您正在经历Spring in Action,第 4 版,作者是 Craig Walls。如果您喜欢它,并且您打算继续学习 SpringBoot,他还撰写了 SpringBoot in Action,该书于 2015 年底发布。这是一本 264 页的快速阅读文章,并回顾了我上面的历史课再彻底一点。
【讨论】:
非常感谢!我喜欢历史课。我相信我尝试过一些非常相似但没有任何自动配置的东西。我早上试试。看起来很有希望,。再次感谢,如果我明白了,我会接受这个作为答案:) 谢谢!是的,我今天早上开始工作了。我认为我的问题是当我无法使其工作时恢复到“试错”方法时,我已经从我的 gradle 依赖项列表中删除了 mysql-connector。哎呀。我非常感谢您简洁而翔实的回答:)以上是关于在没有xml的spring boot中连接到mysql数据源的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Spring Boot 应用程序中连接到 MongoDB
如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询
从 Spring Boot 连接到 Heroku Postgres
Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql