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; }
浙公网安备 33010602011771号