springBoot基础入门
第一部分、SpringBoot基础应用
废话不多说,SpringBoot框架的自动配置以及各种特性概念就不说了,免得显得累赘。直接从代码中去体会!!!
1.1 SpringBoot环境搭建
不展开细讲,IDEA-> new Project -> Spring Initializr -> 设置你的项目属性(选择spring-web),点击fininsh!!
项目结构大概如下:

1.2 项目测试
在controller包下建立HelloController,编码如下:
@RestController
public class HelloController {
@RequestMapping("/demo")
public String hello(){
return "hello springBoot";
}
}
然后在springBoot1DemoApplication中启动项目。访问localhost:8080/demo, 页面会打印出hello springBoot,则为成功启动。
1.3 解决中文乱码问题
如果出现中文乱码,比如我return返回不是hello springBoot而是返回你好 妹子。如果出现乱码,那么有两种解决方案:
@RequestMapping(produces = "application/json; charset=utf-8")- 在配置文件中设置
spring.http.encoding.force-response=true
1.4 热部署问题
如果我们修改了代码,那么就得重启项目才能看到最新的效果,这个时间是白白浪费的。热部署就是我们修改了代码,就不用再重新启动了,也可以看到最新的效果。
-
导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> -
修改设置

按下alt+crrtl+shift+/ 选择registy,

配置好以后,修改代码就无需再重启啦~~
1.5 全局配置文件
applicaiton.xml为全局配置文件,关于项目的全局配置都可以在这里配置。比如我们创建一个Person类。
@ConfigurationProperties(prefix = "person") // 凡是以person开头的属性都会设置到这个类
@Data // lombok
@Component // 注册组件
public class Person {
private int id;
private String name;
private List hobby;
private String[] family;
private Map map;
private Pet pet; // Pet类
}
@Data
public class Pet {
private String name;
private String type;
}
那么那么如何设置Person中的值呢?可以在配置文件中配置。
person.id=1
person.family="father","mother"
person.hobby="吃饭","睡觉","打豆豆"
person.map.k1 = v1
person.map.k2 = v2
person.name= "sean"
person.pet.type= "dong"
person.pet.name="wnagcai"
第一次测试结果中文乱码,虽然上面有解决乱码的方案,但是针对于发起http请求的过滤。而我们这个测试类并没有跳转网页,所以需要如下配置:

测试结果如下:
Person(id=1, name="sean", hobby=["吃饭", "睡觉", "打豆豆"], family=["father", "mother"], map={k1=v1, k2=v2}, pet=Pet(name="wnagcai", type="dong"))
1.6 yaml配置文件
比起properties配置文件,yaml更为推荐,看起来更简洁。并且加载顺序高于properties。那么我们来改造下上面的application.properties。
server:
port: 8081
person:
id: 2
name: 爱新觉罗
family: [父王,母后]
hobby: [吃饭,睡觉,打豆豆]
map: {k1: v1,k2: v2}
pet: {type: dog,name: 旺财}
输出结果为:
Person(id=2, name=爱新觉罗, hobby=[吃饭, 睡觉, 打豆豆], family=[父王, 母后], map={k1=v1, k2=v2}, pet=Pet(name=旺财, type=dog))
1.7 配置文件的注入类型
使用@value可以注入配置文件的值,下面我们新建一个Student类,将配置文件的id和name属性赋值给student
@Data
@Component
public class Student {
@Value("${person.name}")
private String name;
@Value("3")
private int id;
}
这个student的name就会变为配置文件的person.name,而id也会被赋值为3。
需要注意:@value注解不支持Map,对象,yaml的行内式写法!
1.8 自定义配置文件
上面的文件是全局配置文件,那么如果我自定义一个文件,需要加载这个配置文件如何操作呢?
新建一个MyProperties.java类,
@Data
@Component
@ConfigurationProperties(prefix = "test")
@PropertySource("classpath:test.properties") // 配置自定义配置文件的名称和位置
public class MyProperties {
private int id;
private String name;
}
加载test.properties ,文件如下:
test.id=1
test.name=zhangsan
测试类:
@Autowired
private MyProperties myProperties;
@Test
void configurationTest3() {
System.out.println(myProperties);
}
输出结果:
MyProperties(id=1, name=zhangsan)
1.9 自定义配置文件
我们在用spring的时候,总是使用xml方式来加载配置,springBoot则更加推荐使用自定义配置。那么如何写一个自定义配置文件呢?
@Configuration // 表明这是一个配置文件
public class MyConfig {
@Bean // 将返回值注册为组件
public MyService myService(){
return new MyService();
}
}
public class MyService {
}
那么我们来测试一下容器中有没有这个组件:
@Autowired
private ApplicationContext applicationContext;
@Test
void configurationTest4() {
System.out.println(applicationContext.containsBean("myService"));
}
结果为true 表示我们自定义的配置已经注册进入容器。!

浙公网安备 33010602011771号