使用Idea搭建SpringBoot入门项目

由于工作需要,开始学习springboot。想通过博客记录下来学习中的点滴。

第一次写博客,如有纰漏错误,欢迎各位大佬批评指正,感谢。

1.打开idea,新建一个项目

2.选择Spring Initializer,点击next

(注意:idea自带springboot插件,如果你的idea没有找到,那么需要开启一下)开启如下:

打钩开启即可。

3.第二步点击next之后,填写项目信息

4.设置完毕,点击next,选择项目使用的技术,把web添加上。

5.点击next,填写项目名称,完毕点击finish。

6.创建成功,项目结构如下

启动类和测试类 idea 已经自动为我们创建好了,我们暂时先不要管这些。我们自己动手运行一个springboot项目

首先创建一个Controller

在这顺便说一下,这两个注解的作用。

@RestController :让该类下的所有方法返回的数据都是以json格式.

该注解的作用等同于  在类上添加@Controller注解,同时在方法上添加@ResponseBody注解,如图所示。

区别就是如果采用第二种,需要类中每个方法都增加@ResponseBody注解。

@RequestMapping:配置映射的路径

如图所示配置的话,访问路径为:127.0.0.1:8080/hello

然后我们在该类中手写一个SpringBoot启动的入口:

我第一次运行的时候失败了,报错内容如下

检查一番之后,发现,之前为了着重解释@RestController注解,忘记了加springboot最重要的一个注解了

@EnableAutoConfiguration  该注解可以简单理解为自动配置,扫包的范围默认是在当前类。也就是说,只有这个类里面的方法配置的映射路径才能访问到。

自动加载SpringBoot内置的tomcat配置并创建。

加上该注解,就可以运行成功并访问了。

但是这种方法是不符合规范的,一个项目的入口方法怎么能随便就放在一个Controller类里面呢,这样不能实现复用的。

所以我们把这个main方法提出来,单独创建一个运行类。目录如下

此时,我们要向访问到Controller类里方法的映射该怎么做呢?这就涉及到另外一个注解

@ComponentScan():该注解的作用是扫描包下的类,可以是一个包,也可以是多个包

运行此类,一样也可以访问到Controller包下面的类的方法。

注意:如果是按顺序敲的话,运行这个类的时候,一定要注意把先前运行起来的那个关掉哦。不然会报错

还有,在@ComponentScan()这个注解里面填写包的路径的时候,一定要填的准确一点,不要直接填写一个最外层的包,

虽然该注解可以扫描包及子包。但是这样做非常不好。一来扫描了过多无用的包影响了性能,二来怕引发不必要的冲突。

那么有没有更好的方式来实现呢?当然是有的啦,接下在再介绍一个新的注解

@SpringBootApplication注解:该注解的作用是扫描当前包以及同级包。

我们再新建一个包 Controller2  在里面再写一个类,来测试一下。

把项目运行类的@ComponentScan注解 注释掉,增加@SpringBootApplication注解,运行,访问一下Controller包下的类的方法和Controller2包下的类的方法

按照我的这种目录结构,我本以为能成功。但是运行项目之后,发现两个包里的类都访问不到。

另外百思不得其解~~

后来求助了以为大佬,才发现我对@SpringBootApplication这个注解的作用理解有误。

该注解的作用再强调一遍,是访问当前包及其同级包下面的类。

我把同级包错误的理解成了是这个运行类所在的包的同级包。

正确的理解是 这个运行类的当前所在包       和这个类的同级包,也就是这个类所在包的子包是这个类的同级包。原因出在这里。

下面是正确的结构:

最后的最后,我想阐述一下我的观点,我知道我的博客目前写的还是很差劲的,但是我在写博客的过程中发现了好多问题,对我自己的提升很大,加深了印象和理解,所以说写博客这种学习博客我还是非常提倡的,仅以记录自己学习点滴。望各位大佬勿喷哈。

猜你喜欢

转载自blog.csdn.net/weixin_42652696/article/details/83414195