springboot入门(菜鸟困惑)

spring boot初步学习

一.springboot架构初识

1.项目图示:

成功在idea中新建好了项目后,可以发现如下结构:
目录

解析:

  1. .idea中的是project的xml配置,有maven库的配置,还有springboot之间的依赖配置
  2. mvn只知道与maven有关,暂时不知道是个啥
  3. src中,有main和test。
  • test文件夹就是一个测试类:
    测试类
  • 而main文件夹中的java是主要编写代码的区域。而resource则是包含了配置文件application.properties:
    配置文件
    这个配置类可以配置项目是否开启热启动,还有项目的根目录指定,还有项目的运行端口等等。
  • resource中的其他文件也各有用处,如图:
    rosourse目录
    其中的banner.txt是可以在内置的tomcat中加入注释文件的,比如,我的照片:
    献丑
    如果想要关闭banner,可以写这个代码再main中:
SpringApplicationBuilder builder = new SpringApplicationBuilder(Test19SpringBoot2Application.class);
        //修改Banner的模式为OFF
        builder.bannerMode(Banner.Mode.OFF).run(args);

当然,还可以改变启动后的图标之类的。

  • 还有就是日志的配置文件也是在resource中配置的。(一开始没有的话,自己新建一个)如图:
    在这里插入图片描述
  1. 项目的启动文件是:
    启动类
    自带了main方法,作为项目启动的地方。
5.常规属性配置
  1. 只需要在application.properties中定义属性,然后在代码中直接使用@Value注入,spring容器就会自动完成注入的操作。
    如下:首先定义数据:
book.author=罗贯中 
book.name=三国演义 
book.pinyin=sanguoyanyi
//修改中文识别配置
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

然后 在IntelliJ IDEA中依次点击File -> Settings -> Editor -> File Encodings
将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。到此,可以识别中文了

最后在变量中通过@Value直接注入就行了,如下:

    @Value(value = "${book.author}")
    private String bookAuthor;
    @Value("${book.name}")
    private String bookName;
    @Value("${book.pinyin}")
    private String bookPinYin;

修改index方法,使之返回这些值:

@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
    String index(){
        return "Hello Spring Boot! The BookName is "+bookName+";and Book Author is "+bookAuthor+";and Book PinYin is "+bookPinYin;
    }

疑问:为什么要多此一举,将所有的数据放到配置文件中,直接写代码的时候赋值不好吗?为了复用吗?

二.定义(知识点)

玉翔说过:所有的定义,组成一个知识。

  1. 关于@SpringBootApplication注解:
    源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

}

源码中,它组合了@SpringBootConfiguration、@EnableAutoConfiguration以及@ComponentScan三个注解。
其中:
* @SpringBootConfiguration实际上就是@Configuration注解,表明这个类是一个配置类
* @EnableAutoConfiguration表示让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置
* @ComponentScan是将指定的packages的用注解标识的类自动装入到spring框架中。简而言之,扫描配置到的类到spring容器中。
同时,源码中不难发现,ComponentScan还有过滤器。所以,如果不想扫描包下所有类,可以过滤了
注意:如果我们使用了@SpringBootApplication注解的话,系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。(arctifactID,就是项目名+id;group目测是实体类包,domain或者pojo或者entity)

  1. Profile配置问题
    profile可以解决数据库加载的时候,不同的Profile文件选择的问题:
    如下配置,可以定义两个不同的文件名在resource中,然后,将名字按application-{}.properties规则命名即可。例如:
    hh
    在两个配置文件中,假设我们写的是;
    在这里插入图片描述
    最后,读取的时候只要在主配置文件application.properties中写入要读取的文件名即可。
spring.profiles.active=dev

这样最后运行的时候,会是8080端口打开。

3.学习框架的一点心得

  1. 框架的学习,首先是环境配置,搭建好一个环境,明白各种工程目录的作用,才可以知道以后怎么改动文件,同时,运行起你的hello world。这是第一步,一个开始
  2. 了解最主要的用法,核心知识。比如说:新的定义,还有用法,优缺点。最后升华的时候可以该进原有的缺陷。

猜你喜欢

转载自blog.csdn.net/qq_42031483/article/details/88881156