spring-boot之(10) datasource

  前一章已经说过了使用spring-boot默认配置的数据源,现在来定制数据源。

  • 首先回退之前的配置

  在application.yml去掉下面的配置

#  datasource:
#    url: jdbc:mysql://ip:port/database?useUnicode=true&characterEncoding=utf-8
#    username: username
#    password: password
#    driver-class-name: com.mysql.jdbc.Driver
  • 添加新的资源配置文件

  url、username、password对应Datasource对应的属性

  

application:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://ip:port/database?useUnicode=true&characterEncoding=utf-8
    username: username
    password: password

 

  • 用注解加载配置文件配置以及生成Datasource

  使用@ConfigurationProperties注解和@Bean注解来生成数据源实例

@Component
public class MyJdbcTemplate {

    private JdbcTemplate jdbcTemplate;

    @Bean
    @ConfigurationProperties("application.datasource")
    public DataSource getDatasource(){
        //方法一
     //return new org.apache.tomcat.jdbc.pool.DataSource();
        //方法二
        return DataSourceBuilder.create().build();
    }

    @Autowired
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
        this.jdbcTemplate = jdbcTemplate;
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }
}

 

  • 最后使用JdbcTemplate查询数据库打印查询数据
@Service
public class SimpleUserDetailService implements UserDetailsService {

    @Autowired
    private MyJdbcTemplate myJdbcTemplate;

    @Override
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
        Map map = myJdbcTemplate.getJdbcTemplate().queryForMap("select * from sys_user where `account`='" + s + "'");
        System.out.println(map.get("USERID"));
        return new User("root", "root");
    }
}

  结果为

10000083778910

  另:当存在多个数据源时,使用@Primary来设置某个数据源为spring-boot自动配置的数据源

  • 参考资料

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-configure-a-datasource

posted @ 2017-05-11 15:53  風之殤  阅读(139)  评论(0)    收藏  举报