SpringBoot--springboot启动类和controller的配置
作为一个springboot初学者,在探索过程中难免遇到一些坑,边看书边动手,发现书本中的版本是1.0,而我使用的是最新版2.0,所以有些东西不能完全按照书本进行操作,因为2.0中已经不支持1.0中的部分配置了,比如2.0中的注解@SpringBootApplication是注解@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan的组合,而1.0中它是@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan等。而且在入门教程中将启动类和controller放在同一个类中,但是这样的配置随着业务的扩展controller会越来越多,随之而来的问题就是启动类越来越大,考虑到这点,我想将启动类和controller分开配置,参考网络资源,并在一番恶斗之后终于实现了这个想法,因为遇到了一些坑,所以必须记录下来!!
一、controller和启动类在同一个class中
使用IntellJ IDEA创建springboot项目时,会在默认的包下自动创建一个*Application.java的类,其中*一般是artifact名称,即项目名称,然后可以直接在这个类中配置controller并使用这个类启动项目。
@Controller @SpringBootApplication public class WebdemoApplication {@RequestMapping("/")public String index(Model model) {Person person = new Person("张三", 26);List<Person> people = new ArrayList<>();Person p1 = new Person("李四", 27);Person p2 = new Person("王五", 27);Person p3 = new Person("赵六", 27);people.add(p1);people.add(p2);people.add(p3);model.addAttribute("singlePerson", person);model.addAttribute("people", people);return "/hello/index";}public static void main(String[] args) {SpringApplication.run(WebdemoApplication.class, args);} }
这就是将controller和启动类放在一个类中的配置,直接点右键运行这个类就可以访问了!
二、将controller和启动类分开配置
因为将controller和启动类分开,所以首先要新建一个controller类
@Controller public class HelloController {@RequestMapping("/hello")public String index(Model model) {Person person = new Person("张三", 26);List<Person> people = new ArrayList<>();Person p1 = new Person("李四", 27);Person p2 = new Person("王五", 27);Person p3 = new Person("赵六", 27);people.add(p1);people.add(p2);people.add(p3);model.addAttribute("singlePerson", person);model.addAttribute("people", people);return "/hello/index";} }
我不改变启动类的位置,但是启动类中只要一个main方法即可,如下:
@SpringBootApplication public class MyWebdemoApplication {public static void main(String[] args) {SpringApplication.run(MyWebdemoApplication.class, args);} }
此时不改变启动类位置,目录如下:
此时我访问http://127.0.0.1:8080/hello时总是包404,排除视图文件的因素之后我将启动类放到com.hyc下,目录如下:
此时再重启服务,访问http://127.0.0.1:8080/hello时才正常了!
所以这种方式一定要将启动类放在root目录下,这样才能扫描到controller、service,如果想让启动类放在任何地方都生效的话,可以使用下面的配置方法
@ComponentScan(basePackages = {"com.hyc"}) @SpringBootApplication public class WebdemoApplication {public static void main(String[] args) {SpringApplication.run(WebdemoApplication.class, args);} }
这种方法中,controller不变,启动类放在任意包下面,我是放在创建项目默认包中,这样只需在启动类上增加注解@ComponentScan即可,其中的(basePackages = {"com.hyc"})是需要扫描的包名,可以是多个,如(basePackages = {"com.hyc.controller","com.hyc.service"})等,这就意味着mvc容器会去这些包下面扫描,进而找到controller等资源。
三、总结
综上所述,springboot的配置有以下三种:
1、当启动类和controller在同一类中时,需要在该类上添加注解@Controller;
2、当启动类和controller分开时,启动类要放在根目录下,启动类上只有注解@SpringBootApplication;
3、当启动类和controller分开时,如果启动类在某个包下,需要在启动类中增加注解@ComponentScan,配置需要扫描的包名;
转载于:https://www.cnblogs.com/hellowhy/p/10045783.html
SpringBoot--springboot启动类和controller的配置相关推荐
- 学习总结:springboot 的启动类Starters的理解
目录 一.Starters是什么? 二.Starters命名 三.Starters分类 1. Spring Boot应用类启动器 2. Spring Boot生产启动器 3. Spring Boot技 ...
- SpringBoot的启动类显示的是个方框而不是叶子形状
目录索引 一.项目背景 二.报错展示 三.原因分析 四.纠错方案 五.后话 一.项目背景 部署SpringCloud项目测试OpenFeign(远程调用和负载均衡的集成者)组件 新建服务消费者测试mo ...
- SpringBoot, 启动类,使用「SpringBootApplication」标注
■使用 @SpringBootApplication public class MyApplication {public static void main(String[] args) {Sprin ...
- 关于idea中springboot主启动类没有绿色启动的问题
第1步:查看jar包是否导入,若没有导入 导入jar包,点击红色圈住的按钮 第2步:导入完成jar之后,需要进行编译,点击compile进行编译即可.
- springboot系列(三) 启动类中关键注解作用解析
一.Springboot:请求入口@SpringBootApplication @EnableAspectJAutoProxy @EnableScheduling @EnableTransaction ...
- 基于SpringBoot的后台管理系统(启动类解析,开源的世界真好)(一)
Guns基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + 分页插件PageHelper + 通用Mapper + beetl!Guns项目代码简洁 ...
- SpringBoot 启动类 @SpringBootApplication 注解 以及执行流程
@SpringBootApplication : 是Sprnig Boot项目的核心注解,目的是开启自动配置 目录 @SpringBootApplication : 是Sprnig Boot项目的 ...
- SpringBoot Jar启动
SpringBoot项目的启动 当我们在IDE中新建(或导入)了一个SpringBoot项目之后,我们如果想要启动这个SpringBoot项目,我们可以找到相应的带有@SpringBootApplic ...
- SpringBoot(2.4.0)自动配置原理(源码)
一.从@SpringBootApplication讲起 源码 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Docu ...
最新文章
- Mat,Iplimage,vector,vector_vector_Point2f等类型之间的相互转换
- 服务器安装使用rstudio-server
- html增加状态信息管理代码,JavaScript+HTML实现学生信息管理系统
- 安装APK失败,错误代码:INSTALL_FAILED_INVALID_APK 解决方案
- zookeeper的名词复盘-数据模型
- c语言笔记之数组和指针(初学者)
- Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway 1
- Android开发推荐资料大合集
- 深度解读:GAN模型及其在2016年度的进展
- 前排!零基础小白学习3D建模的必经之路
- Choerodon猪齿鱼敏捷管理实践(一)——需求管理
- Python编程从入门到实践学习内容包含哪些?
- 免费开源的100套Echarts大屏数据可视化模板分享
- 谷歌浏览器Network详解
- xp系统安装金蝶k3服务器配置,xp安装金蝶k3安全设置.doc
- 《麻省理工学院公开课:人工智能》笔记二
- 中科院python编程培训班
- 使用Asponse.cells生成图片如何去掉水印
- 基于web在线购物商城网站的设计与实现(学生网页设计作业源码)
- 服务器换主板不换系统教程,主板要换,系统不变
热门文章
- “那不勒斯”服务器芯片,32核/64超线程:AMD 公开 Naples “那不勒斯” 部分规格和性能...
- 神奇!大神利用AI修复古董纪录片,还原1920年的京城生活
- 量化评估推荐系统效果
- 数据结构(三)插入排序
- 乘法更新规则对于并发的非负矩阵分解和最大间隔分类
- linux调用python出错,linux里面python调用系统命令问题
- php 判断函数禁用,php禁用函数设置及查看方法的介绍(附示例)
- webpack打包原理_对于webpack打包原理你知道有多少?
- jquery 监听td点击事件_安卓开发监听点击事件的一种方法
- maven依赖avro_Apache Avro使用入门指南