成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - druid-spring-boot-starter中的一個(gè)疑問

瀏覽:57日期:2023-10-17 11:27:06

問題描述

先貼代碼

@Configuration@ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class)@EnableConfigurationProperties(DruidStatProperties.class)@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class})public class DruidDataSourceAutoConfigure { @Bean @ConfigurationProperties('spring.datasource.druid') @ConditionalOnMissingBean public DataSource dataSource(Environment env) {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();//if not found prefix ’spring.datasource.druid’ settings,’spring.datasource’ prefix settings will be used.if (dataSource.getUsername() == null) { dataSource.setUsername(env.getProperty('spring.datasource.username'));}if (dataSource.getPassword() == null) { dataSource.setPassword(env.getProperty('spring.datasource.password'));}if (dataSource.getUrl() == null) { dataSource.setUrl(env.getProperty('spring.datasource.url'));}if (dataSource.getDriverClassName() == null) { dataSource.setDriverClassName(env.getProperty('spring.datasource.driver-class-name'));}// set filters default value on StatViewServlet enabled.if (! 'false'.equals(env.getProperty('spring.datasource.druid.StatViewServlet.enabled'))) { try {dataSource.setFilters('stat'); } catch (SQLException e) {e.printStackTrace(); }}return dataSource; }}

public class DruidDataSourceBuilder { private Map<String, String> properties = new HashMap<String, String>(); public static DruidDataSourceBuilder create() {return new DruidDataSourceBuilder(); } public DruidDataSource build() {DruidDataSource dataSource = new DruidDataSource();maybeGetDriverClassName();bind(dataSource);return dataSource; } //use spring boot relaxed binding by reflection config druid . detail see Spring Boot Reference Relaxed binding section. private void bind(DruidDataSource result) {MutablePropertyValues properties = new MutablePropertyValues(this.properties);new RelaxedDataBinder(result).withAlias('url', 'jdbcUrl').withAlias('username', 'user').bind(properties); } private void maybeGetDriverClassName() {if (!this.properties.containsKey('driverClassName')&& this.properties.containsKey('url')) { String url = this.properties.get('url'); String driverClass = DatabaseDriver.fromJdbcUrl(url).getDriverClassName(); this.properties.put('driverClassName', driverClass);} }}

不理解的地方在DruidDataSourceBuilder的maybeGetDriverClassName方法,顯然DruidDataSourceAutoConfigure中的方法dataSource在使用DruidDataSourceBuilder的時(shí)候,DruidDataSourceBuilder中的properties是沒有屬性的,這樣的話maybeGetDriverClassName方法不是沒有意義嗎?還有一點(diǎn)是DruidDataSourceAutoConfigure的dataSource方法中的if判斷,在方法中dataSource應(yīng)該還沒注入屬性吧,這樣判斷不是也沒意義?

問題解答

回答1:

可能是為以后 properties 里面添加其他屬性留余地吧。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 综合亚洲一区二区三区 | 亚洲一区二区天海翼 | 一级a性色生活片久久毛片 一级a做爰片欧欧美毛片4 | 国产一级一级一级成人毛片 | 日韩大片高清播放器大全 | 欧美成人网7777视频 | a级毛片免费观看视频 | 免费看欧美一级特黄a大片一 | 青青草国产一区二区三区 | 国产一级视频久久 | 国产精品欧美亚洲 | 99久久综合狠狠综合久久一区 | 国产激情一区二区三区四区 | 午夜男人女人爽爽爽视频 | 亚洲综合成人网在线观看 | 日本久草网 | 手机看片日韩国产一区二区 | 亚洲精品国产综合久久一线 | 欧美精品束缚一区二区三区 | 亚洲视频播放 | 亚洲国产成人精品一区二区三区 | 国产在线极品 | 亚洲三级大片 | 日本www高清 | 玖草在线观看 | 日日a.v拍夜夜添久久免费 | 热99re久久国超精品首页 | 韩日一区二区 | 久久这里只有精品免费播放 | 免费看的一级片 | 日韩欧美印度一级毛片 | 午夜国产视频 | 成人在线观看一区 | 性日韩精品 | 97capcom超频在线 | 欧美综合成人 | 亚洲精品综合久久中文字幕 | 日韩国产成人精品视频人 | 国产呦在线观看视频 | 亚洲免费观看视频 | 欧美高清一级片 |