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 表示我们自定义的配置已经注册进入容器。!

posted @ 2020-10-05 21:06  杨小星儿  阅读(255)  评论(0)    收藏  举报