博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java配置
阅读量:2161 次
发布时间:2019-05-01

本文共 2905 字,大约阅读时间需要 9 分钟。

默认配置原理

springboot的默认配置方式和我们之前玩的配置方式不太一样,没有任何的xml。那么如果自己要新增配置该怎么办?比如我们要配置一个数据库连接池,以前会这么玩:

现在该怎么做呢?

3.1.回顾历史

事实上,在Spring3.0开始,Spring官方就已经开始推荐使用java配置来代替传统的xml配置了,我们不妨来回顾一下Spring的历史:

  • Spring1.0时代

    在此时因为jdk1.5刚刚出来,注解开发并未盛行,因此一切Spring配置都是xml格式,想象一下所有的bean都用xml配置,细思极恐啊,心疼那个时候的程序员2秒

  • Spring2.0时代

    Spring引入了注解开发,但是因为并不完善,因此并未完全替代xml,此时的程序员往往是把xml与注解进行结合,貌似我们之前都是这种方式。

  • Spring3.0及以后

    3.0以后Spring的注解已经非常完善了,因此Spring推荐大家使用完全的java配置来代替以前的xml,不过似乎在国内并未推广盛行。然后当SpringBoot来临,人们才慢慢认识到java配置的优雅。

有句古话说的好:拥抱变化,拥抱未来。所以我们也应该顺应时代潮流,做时尚的弄潮儿,一起来学习下java配置的玩法。

3.2.尝试java配置

java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:

  • @Configuration:声明一个类作为配置类,代替xml文件

  • @Bean:声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签

  • @Value:属性注入

  • @PropertySource:指定外部属性文件。

我们接下来用java配置来尝试实现连接池配置

3.2.1.引入依赖

首先在pom.xml中,引入Druid连接池依赖:

com.github.drtrang
druid-spring-boot2-starter
1.1.10

3.2.2.添加jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/leyoujdbc.username=rootjdbc.password=12356

3.2.3.配置数据源

创建JdbcConfiguration类:

package com.learn.springboot.config;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import javax.sql.DataSource;@Configuration@PropertySource("classpath:jdbc.properties")public class JdbcConfiguration {    @Value("${jdbc.url}")    String url;    @Value("${jdbc.driverClassName}")    String driverClassName;    @Value("${jdbc.username}")    String username;    @Value("${jdbc.password}")    String password;    @Bean    public DataSource dataSource() {        DruidDataSource dataSource = new DruidDataSource();        dataSource.setUrl(url);        dataSource.setDriverClassName(driverClassName);        dataSource.setUsername(username);        dataSource.setPassword(password);        return dataSource;    }}

解读:

  • @Configuration:声明JdbcConfiguration是一个配置类。

  • @PropertySource:指定属性文件的路径是:classpath:jdbc.properties

  • 通过@Value为属性注入值。

  • 通过@Bean将 dataSource()方法声明为一个注册Bean的方法,Spring会自动调用该方法,将方法的返回值加入Spring容器中。相当于以前的bean标签

然后就可以在任意位置通过@Autowired注入DataSource了!

3.2.4.测试

我们在HelloController中测试:

package com.learn.springboot.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.sql.DataSource;@RestController@EnableAutoConfigurationpublic class HelloController {    @Autowired    private DataSource dataSource;    @GetMapping("show")    public String test(){        return "hello Spring Boot!";    }}

在test方法中打一个断点,然后Debug运行并查看:

属性注入成功了!

转载地址:http://rzuzb.baihongyu.com/

你可能感兴趣的文章
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>