关于Spring boot jdbc问题

关于Spring boot jdbc问题

老师好,因为我们目前学Spring boot使用的是application.properties的配置模式,在做jdbc的资料库绑定时,并没有像先前使用xml声明bean注入的方式,例如:


xml

<bean id="dataSource01" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/jdbc_imooc?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
	
    <bean id="jdbcTemplate01" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>


透过xml配置我可以知道jdbcTemplate使用的是dataSource01这个类,但在properties中只有下列这些参数,请要如何将指定的dataSource注入我想要使用的jdbcTemplate中呢?


又Spring boot如何自动的将下面的datasource自动注入到jdbctemplate中呢?

(我看了第三方范例的properties也是这样写,并且使用@Autowired注解就可以直接操作jdbctemplate,因此无法理解为何他就知道要注入那个?)


//datasource
spring.datasource.url=jdbc:mysql://localhost:3306/jdbc_imooc?useUnicode=true&characeterEncoding=utf-8&serverTimezone=Asia/Shanghai

// info
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、Spring Boot中如果在配置文件里写了某些东西,它是能够自动读取到某一个类作为属性的,就比如说:同学提及的这些数据库的一些配置,我们是需要在Spring Boot的一个依赖里,这个依赖通常命名xxx.starter,像jdbc它就有jdbcstarter在依赖里面,然后,在这个starter里面会定义某一个类,它就是被自动配置的。

2、这个被自动配置的类,Spring Boot就会去把它给加载进来,加载进来的时候还有一些其他的配置,比如说:properties等,有了这些配置之后,Spring Boot在启动的时候,它就会去这个配置文件application.properties里面去找有没有对应的属性被这个用户写了,如果写了的话,就把它给读取进来,并且放到这个类里面。这是一套相对复杂的过程,在写starter的时候,就会去指定某一个类作为自动配置,这个自动配置的时候也会去指定说,这个前缀是什么,如果指定了数据库的这个配置,那么这个类被spring boot自动加载配置了,于是类里就有一些属性,如:IP,端口号等

3、这些属性就代表说有可能会被property里面的属性所匹配上的,就是通过这一步,它建立了一个类的匹配关系,那么这个类有了,这个类是是我们写的,但是这个类它所对应的这个前缀,也是需要规定的。相当于就是通过这样的一个流程,把我们需要自动配置的这个类去指定好,并且它在配置文件中的这个前缀去指定好,这样的话,只要我们在配置文件里写了这样的一个前缀,那么Spring Boot就会去读取到并且识别出这个是要匹配到这个类里的

4、上述内容并不是简单几句就可以阐述明白的 ,因为它涉及的内容是原理,同学如果有兴趣的话,可以去搜索这部分内容的知识点,如:Spring Boot自动配置原理,或者自定义Spring Boot Starter

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师