springboot使用

SpringBoot 进行java配置

springboot当中java配置主要靠java类和一些注解代替xml:

@Configuration:声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签
@value:属性注入
@PropertySource:指定外部属性文件,

1)jdbc.properties配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=abc123456

2)创建配置类,引入jdbc.properties

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {

    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;
    /*方法的返回值就是一个bean对象
    * 就可以使用@autoWare进行注入
    * */
    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

 

 3)控制器当中进行测试

@Controller
public class HelloController {
    @Autowired
    private DataSource dataSource;
    @RequestMapping("hello")
    @ResponseBody
    public String hello(){
        return "hello spring boot"+dataSource;
    }
}

 

属性注入:有三种方式,放到一个类,直接注入,yum注入

1.单独放到一个类中:

1)配置文件application.properties 放到resource下面

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=abc123456

2)创建一个类,名为JDBCPropertis

public class JdbcProperties {
    private String url;
    private String driver;
    private String username;
    private String password;
}

3)把所有属性加入到该类中:@ConfigurationProperties能自动从application.properties加载对应的属性,要提供属性set() get()方法

@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties {
    private String url;
    private String driver;
    private String username;
    private String password;
}

4)在config中直接使用

可以用属性引用的方式注入,这个好理解。

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
    @Autowired
    private JdbcProperties jdbcProperties;
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(jdbcProperties.getUrl());
        druidDataSource.setPassword(jdbcProperties.getPassword());
        druidDataSource.setDriverClassName(jdbcProperties.getDriver());
        druidDataSource.setUsername(jdbcProperties.getUsername());
        return druidDataSource;
    }
}

也可以用构造方法注入。原因是springboot要执行dataSource(),并把方法结果封装成Bean对象交给springboot管理。看到使用了JdbcProperties.class 并且方法参数也是JdbcProperties也是该类引用,所以这边也有自动注入。 

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(jdbcProperties.getUrl());
        druidDataSource.setPassword(jdbcProperties.getPassword());
        druidDataSource.setDriverClassName(jdbcProperties.getDriver());
        druidDataSource.setUsername(jdbcProperties.getUsername());
        return druidDataSource;
    }
}

 

2 .直接注入

1)创建application.properties属性文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=abc123456

 

 2)直接注入,解释:这是数据库配置,DataSource参数与application.properties去掉jdbc开头长得一样,所以可以直接把数据库参数配置到DataSource中

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }
}

 

3.yum注入

1)创建application.yum 在resource下

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
  username: root
  password: 1234
  arrayPros: 1,2,3,4 #数组
  listPros: #list
    - listvalue1
    - listvalue2
  mapPros: #map
    mapkey1: mapvalue1
    mapkey2: mapvalue2
  listMapPros:  #list<map>
    - listmap1key1: listmap1value1
      listmap1key2: listmap1value2
    - listmap2key1: listmap2value1
      listmap2key22: listmap2value2

 

2)@ConfigurationProperties 就可以获取配置文件信息,自动注入

@Component
@ConfigurationProperties(prefix = "jdbc")
@Data
public class MyProperties {
    private String url;
    private String driverClassName;
    private String username;
    private String password;
    private String[] arrayPros;
    private List<String> listPros;
    private Map<String,String> mapPros;
    private List<Map<String,String>> listMapPros;
}

 

posted @ 2020-12-22 17:09  wangid3  阅读(108)  评论(0)    收藏  举报