目录
1、在线生成springboot项目
2、maven配置
3、idea打开已生成的项目
4、目录结构
@SpringBootApplication注解
5、创建TestController.java
@Controller和@RestController的区别?
6、启动项目
7、打开浏览器
8、补充:Spring Boot的配置文件
8.1、文件格式(UTF-8)
8.2、Profile配置问题
8.3、自定义属性
1、在线生成springboot项目
由于IDEA 社区版没有spring Initializr,所以就上官网在线生成吧
选上web依赖即可
2、maven配置
大家可以参考我的一篇文章:
3、idea打开已生成的项目
选择open即可
4、目录结构
注意:,就是这个Demo1Application类,这是我们整个项目的入口类,这个类有一个@SpringBootApplication注解,这是整个Spring Boot的核心注解,它的目的就是开启Spring Boot的自动配置
- pom.xml:Maven构建说明文件。
- application.properties:一个空的properties文件,可以根据需要添加配置属性。
@SpringBootApplication注解
我们重点来看一下,这个核心注解
点进去看一下:
@SpringBootConfiguration : 再点进去发现是@Configuration,表示Application作为spring配置文件存在
@EnableAutoConfiguration: 启动spring boot内置的自动配置
@ComponentScan : 扫描bean,路径为Application类所在package以及package下的子路径
5、创建TestController.java
@RestController 注解,使TestController变为一个Controller
点进源码可以发现:
@RestController相当于
@Controller
@ResponseBody
这两个注解
@Controller和@RestController的区别?
1、@RestController注解Controller类,则Controller类中的方法无法返回页面(jsp,html),配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容,即默认类中的方法都会以json的格式返回。
举个例子:本来应该到test.html页面的,则其显示"test"这样的字符串
2、@Controller注解注解Controller类,则Controller类中的方法返回页面(jsp,html),
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
6、启动项目
build ->build project
run ->
即可
出现这个字样就代表启动成功了 端口8080
7、打开浏览器
成功
8、补充:Spring Boot的配置文件
8.1、文件格式(UTF-8)
Spring Boot使用一个全局的配置文件application.properties,也可以改成yml格式的(application.yml)
比如修改application.properties
server.port =9999
tomcat启动端口就变了,
如果你在配置文件中,写了中文的注解,中文会变成乱码
为什么呢?application.properties默认编码是windows-31j
那怎么办呢?
我们要将文件改成UTF-8格式的
在IntelliJ IDEA中依次点击File -> Settings -> Editor -> File Encodings
将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。即可
我们回来看一下application.properties的编码格式:
这样中文就不会乱码了
8.2、Profile配置问题
1.在src/main/resources文件夹下定义不同环境下的Profile配置文件,文件名分别为application-prod.properties和application-dev.properties,这两个前者表示生产环境下的配置,后者表示开发环境下的配置,如下:
application-dev.properties:
server.port=8080
application-dev.properties:
server.port=9999
application.properties:
#切换成开发环境
spring.profiles.active=dev
#切换成生产环境
#spring.profiles.active=prod
8.3、自定义属性
在application-dev.properties中添加:
com.zj.phone = android
com.zj.mood = good
com.zj.name = zj
在application.properties中添加:
#切换成开发环境
spring.profiles.active=dev
在TestController中引入:
@RestController
public class TestController {
@Value("${com.zj.phone}")
private String phone;
@Value("${com.zj.mood}")
private String mood;
@GetMapping("/test1")
public String test1() {
return "my phone is "+phone+",and now my mood is "+mood;
}
}
启动项目
如果自定义属性很多,这样一个一个引用还是蛮累的,官方提倡绑定一个对象的bean
我们来创一个ZjBean:
@Configuration
@ConfigurationProperties(prefix = "com.zj")
//@PropertySource("classpath:second.properties")
public class ZjBean {
private String name;
private String phone;
private String mood;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getMood() {
return mood;
}
public void setMood(String mood) {
this.mood = mood;
}
}
注意:prefix指明属性的前缀
不加@PropertySource("classpath:second.properties"),默认会读取application.properies配置文件
如果加上去,就指定读取second.properties配置文件;换成其他的自定义文件也可以
ps:如果你使用的是1.5以前的版本,那么可以通过locations指定properties文件的位置,这样:
|
|
再写一个Test1Controller来测试一下,是否成功注入
@RestController
public class Test1Controller {
@Autowired
ZjBean zjBean;
@GetMapping("/test2")
public String test2() {
return "my phone is "+zjBean.getPhone()+",and now "+zjBean.getName()+" mood is "+zjBean.getMood();
}
}
启动项目
= =