初识springboot+创建第一个springboot项目(IDEA)+配置详解

干货满满 ~~


还是喜欢用IDEA,可是专业版用不起==,就只能用社区版了~~,开发工具其实都无所谓啦

目录

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,所以就上官网在线生成吧

 官网:https://start.spring.io/

 选上web依赖即可

2、maven配置

大家可以参考我的一篇文章:

https://blog.csdn.net/qq_41603102/article/details/82733946

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文件的位置,这样:

1
@ConfigurationProperties(prefix = "config2",locations="classpath:test.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();
    }

}

启动项目

 = =

猜你喜欢

转载自blog.csdn.net/qq_41603102/article/details/86523421