SpringBoot学习笔记
1.环境搭建
1.1.通过maven搭建项目
首先idea创建maven项目,next→next→finish。
然后在pom.xml中导入依赖:放在标签内即可
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1.2.通过IDEA的Spring Initializr搭建项目
第一步:选择工程类型
填写包名,工程名
选择自己需要的模块→next
创建完成并且pom.xml中自动导入了相关依赖:
2.第一个HelloWorld程序
第一步:首先创建一个HelloWorldMainApplication类:
/**
* @SpringBootApplication 来标注一个主程序类,说明这是一个spring boot应用
*/
//springboot应用
public class HelloWorldMainApplication {
public static void main(String[] args) {
//Spring应用启动
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
第二步:再创建一个HelloController控制类:
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
目录结构如下:
第三步:在主类运行项目
第四步:网站打开http://localhost:8080/hello,运行成功
OS:WC香的ep,还不用手动配置tomcat。立马学爆
3.将项目打包成jar包
第一步:pom.xml导入插件
<!--这个插件,可以将应用打包成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
第二步:右侧Maven,双击package
在target文件夹生成了项目jar包
第三步:将jar包拖到桌面,根据jar包路径,通过命令行运行
第四步:再次启动网页:启动成功
4.注入属性的几种方式
4.1.创建两个实体类用于属性的注入
Person类:要生成get,set,tostring方法。
关键注解为:@ConfigurationProperties
@Component//把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
@ConfigurationProperties(prefix = "aaa")//perfix相当于从配置文件中取得id,此处id为aaa
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;//注入日期
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
private Map<String,Object> maps;//注入hash表
private List<Object> lists;//注入列表
private Dog dog;//注入对象
}
Dog类:一样也要生成get,set,tostring方法。
public class Dog {
private String name;
private Integer age;
}
准备两个配置文件:目录结构如下
4.2.使用yml文件配置
aaa:作唯一标识,注意对齐和缩进,以及冒号后的空格。
关键注解为:@ConfigurationProperties
aaa:
lastName: 演示一
age: 18
boss: false
birth: 2019/5/19
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 2
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot01HelloQuickApplicationTests {
@Autowired
Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
运行结果:注入成功
4.3.使用properties文件进行配置
直接用前缀名 点 属性名赋值即可。效果和yml配置相同。如果乱码可以通过setting设置编码方式。
#idea默认为utf-8编码
#注入person属性
aaa.last-name=演示二
aaa.age=18
aaa.birth=2017/12/15
aaa.boss=false
aaa.maps.k1=v1
aaa.maps.k2=14
aaa.lists=1,2,3
aaa.dog.name=dog
aaa.dog.age=14
通过同一个测试类进行测试:测试结果:注入成功
注入中文出现乱码问题:
idea解决办法:File→Settings→File Encodings勾选箭头,重新在配置文件输入值并运行即可。
4
4.4.使用@Value注解注入
@Component
public class Person {
//要生成get set以及toString方法
@Value("张三")
private String lastName;
@Value("18")
private Integer age;
@Value("true")
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
结果如下:
4.5.@ConfigurationProperties和@Value获取值比较
配置文件yml和properties都能获取到值。
如果只是在某个业务中,获取一下配置文件中的某个值,使用@Value;
如果时专门编写一个javaBean来和配置文件进行映射,那么就使用@ConfigurationProperties;
5.其他的一些注解
5.1.读取指定配置文件@PropertySource
5.2.springboot中推荐使用配置类@Configuration
代码:
/**
* @Configuration:指明当前类是一个配置类:用来替代之前的spring配置文件
**/
@Configuration
public class MyAppConfig {
// 将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService(){//容器中通过方法名获得对象
return new HelloService();
}
}