赞
踩
SpringBoot比SpringMVC在依赖包的管理上更加省时省力
配置注入也和之前的SpringMVC方法有所不同
示例:在配置文件Myconfig中获取到JDBC的连接配置信息
1.首先使用IDEA创建一个Maven的项目
在pom.xml文件中添加这些简单的配置即可,如果有额外需要
可以去Maven Repository的网站上去获取配置信息:https://mvnrepository.com/
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> //使用阿里的数据源即可 <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.16</version> </dependency> </dependencies>
添加完之后IDEA会自动提示你导入jar包,点击import后会自动下载这些依赖包
此时需要的环境就已经搭好了,比配置SpringMVC快了不知多少倍
可以看见已经将需要的包下载到本地库里了_
2.创建一个SpringBootDemo主类,在类之前添加@SpringBootApplication注解,声明此程序为SpringBoot应用程序
package edu.xatu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootDemo {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemo.class, args); //此方法用来启动程序,命令行参数也可以不传
}
}
3.接下来写一个简单的控制反转层,这一步完了就可以在网页上看见out方法里面的字符串
package edu.xatu;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MyController {
@GetMapping("out") //设置此方法使用get方法请求 并配上路径 在访问网址的时候就可以跳转此方法
@ResponseBody //直接响应到客户端 也就是可以直接在网页上看到
public String out() {
return "Hello Spring Boot";
}
}
4.接下来直接启动应用程序即可:
会在控制台下看见输出了这些信息:端口号,版本信息等
5.接下来打开浏览器输入 http://localhost:8080/out
就会跳转至刚刚写的那个控制层的out()方法
6.接下来写一个配置类获取到jdbc的配置信息
在resouces下创建一个jdbc.properties的配置文件
并在里面添加配置如下
7.接下来创建配置信息类,
package edu.xatu.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration //声明该类为配置类 @PropertySource("classpath:jdbc.properties") //指明配置文件位置 会自动去resouces下找到此文件 public class Myconfig { @Value("${jdbc.driverclass}") //使用EL表达式获取到对应的值 会为属性自动注入对应的值 private String driverClass; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean public DataSource dataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driverClass); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } }
8.配置信息都写完了,但是怎么样才能看到是否获取到配置信息呢,调试
在控制层里面作如下修改,后Debug主类
接下来跟启动的时候一样,在浏览器中输入端口号,跳转至out()方法
可以看见已经成功获取到配置信息
但是有没有发现在配置类里面的东西过于复杂,如果配置信息过多的话,会让人看的眼花缭乱
接下来做如下修改
9.创建一个专有的获取配置信息的类DBprop,之前的配置信息是放在jdbc.properties文件中,使用的时候需要指定下路径,这里有一个简单的方法,将jdbc.properties文件改名为application.properties,因为springBoot的默认配置文件就叫这个名字,这样就省去了使用注解指定路径的形式
此类会在实例化的时候自动调用get,set方法为属性赋值
@Component 注解同时也会实例化此类
package edu.xatu.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "jdbc") //prefix定义配置文件中属性 在配置文件中指定了属性的类型,理解为前缀也可以 @Component //自动实例化 public class DBprop { private String driverClass; private String url; private String username; private String password; public String getDriverClass() { return driverClass; } public void setDriverClass(String driverClass) { this.driverClass = driverClass; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
和之前的配置类相比,这样就简洁明了了很多
并且可以直接给方法传入已经实例化的DBprop,然后使用get方法就方便了很多
package edu.xatu.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration //声明配置类 public class Myconfig { @Bean public DataSource dataSource(DBprop prop) { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(prop.getDriverClass()); druidDataSource.setUrl(prop.getUrl()); druidDataSource.setUsername(prop.getUsername()); druidDataSource.setPassword(prop.getPassword()); return druidDataSource; } }
这样也是可以和最开始的那种方法得到同样的结果
10.当然也可以使用另外一种方法实例化DBprop
在DBprop中删除掉@Component 注解
在配置类之前添加@EnableConfigurationProperties(DBprop.class)此注释也是可以的
这样也是可以得到和最开始一样的效果
11.当然还有一种吊炸天的方法,可以做到连之前实例化配饰属性的DBprop都可以不要,配置类方法里面的东西都不要,直接返回一个实例化的对象即可,和上面配置方法类似,只是这次将注解加到了方法前面,意味着只为此方法服务
但是得记住一点,内部装配还是要用默认的get,set方法,那么意味着就得符合命名规范啦,所以就得更改application.properties中的属性名称
之前使用的是这样的get方法:
所以就得按照国际通用的命名规范做出修改如下:
这样会使代码更加简洁明了,可读性更高
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。