spring boot介绍及使用详解
Spring boot的特点
1. 创建独立的Spring应用程序
2. 嵌入的Tomcat,无需部署WAR文件
3. 简化Maven配置
4. 自动配置Spring
5. 提供生产就绪型功能,如指标,健康检查和外部配置
6. 绝对没有代码生成和对XML没有要求配置
Spring boot的使用
1、maven配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.springboot.sample</groupId><artifactId>spring-boot-sample</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>spring-boot-sample</name><description>Spring Boot Sample Web Application</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.2.RELEASE</version><relativePath /> </parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MYSQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- Spring Boot JDBC --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>复制代码
2、application类
@SpringBootApplication
@ServletComponentScan
public class SpringBootApplication extends SpringBootServletInitializer {private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);public static void main(String[] args) {SpringApplication.run(SpringBootSampleApplication.class, args);}
}
复制代码
3、配置类
@Repository
@Component
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter implements EnvironmentAware{private static final Logger logger = LoggerFactory.getLogger(MyWebAppConfigurer.class);private RelaxedPropertyResolver propertyResolver;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 多个拦截器组成一个拦截器链// addPathPatterns 用于添加拦截规则// excludePathPatterns 用户排除拦截registry.addInterceptor(new MyInterceptor1()).addPathPatterns("/**");registry.addInterceptor(new MyInterceptor2()).addPathPatterns("/**");super.addInterceptors(registry);}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/res/**").addResourceLocations("classpath:/res/");// 可以直接使用addResourceLocations 指定磁盘绝对路径,同样可以配置多个位置,注意路径写法需要加上file:registry.addResourceHandler("/imgs/**").addResourceLocations("file:D:/imgs/");super.addResourceHandlers(registry);}
}复制代码
4、添加filter
@WebFilter(filterName="myFilter",urlPatterns="/*")
public class MyFilter implements Filter {@Overridepublic void destroy() {System.out.println("过滤器销毁");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("执行过滤操作"); chain.doFilter(request, response);}@Overridepublic void init(FilterConfig config) throws ServletException {System.out.println("过滤器初始化");}
}
复制代码
5、controller
@RestController
@RequestMapping("/hello")
public class HelloController {@RequestMapping("/info")public Map<String, String> getInfo(@RequestParam String name) {Map<String, String> map = new HashMap<>();return map;}
}
复制代码
6、service
@Service
public class HelloWorldService {public String getHelloMessage() {return "Hello world";}
}
复制代码
7、全局异常处理
@ControllerAdvicepublic class GlobalExceptionHandler {@ExceptionHandler(RuntimeException.class)@ResponseBody //在返回自定义相应类的情况下必须有,这是@ControllerAdvice注解的规定public MyExceptionResponse exceptionHandler(RuntimeException e, HttpServletResponse response) {return resp;}}
复制代码
说明:
@ControllerAdvice是controller的一个辅助类,最常用的就是作为全局异常处理的切面类
@ControllerAdvice可以指定扫描范围
@ControllerAdvice约定了几种可行的返回值,如果是直接返回model类的话,需要使用@ResponseBody进行json转换
1、返回String,表示跳到某个view
2、返回modelAndView
3、返回model + @ResponseBody
8、添加被其他配置使用的bean
@Bean
public PageHelper pageHelper(DataSource dataSource) {PageHelper pageHelper = new PageHelper();return pageHelper;
}
复制代码
9、添加数据加载类
@Component
public class MyStartupRun implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println(">>>>>>>>>>>>>>>服务启动执行");}
}
复制代码
该组件在项目启动时会立即执行
文章最后喜欢的小伙伴们,可以关注下我,以后带来更多精彩内容。
转载于:https://juejin.im/post/5ccd3de751882540e974b2a3
spring boot介绍及使用详解相关推荐
- Spring Boot的启动器Starter详解
Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...
- ElasticSearch——Spring Boot 集成 ES 操作详解
文章目录 ElasticSearch--Spring Boot 集成 ES 操作详解 1.SpringBoot 集成 ES 2.索引的API操作详解 3.文档的API操作详解 ElasticSearc ...
- 轻量级数据库sqlite,spring boot+sqlite的配置详解 (一)
spring boot+sqlite的配置,及成功运行详解 sqlite数据库的安装与调试 首先,通过sqlite官方地址下载对应的安装包 https://www.sqlite.org/downloa ...
- 轻量级数据库sqlite,spring boot+sqlite的配置详解 (二)
轻量级数据库sqlite,spring boot+sqlite的配置详解 (二) 轻量级数据库sqlite,spring boot+sqlite的配置详解 (一) 首先,需要创建一个spring bo ...
- Spring Boot jackson配置使用详解
Spring Boot系列-json框架jackson配置详解 T1 - 前言 目前Java最常见的3中JSON操作框架分别为Gson.Jackson.FastJson,该篇文章主要讲解jackson ...
- Spring Boot的SpringApplication类详解
相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生.SpringApplication类的run()方法往往在Sprin ...
- Spring boot中使用aop详解
aop是spring的两大功能模块之一,功能非常强大,为解耦提供了非常优秀的解决方案. 现在就以springboot中aop的使用来了解一下aop. 一:使用aop来完成全局请求日志处理 创建一个sp ...
- (转)Spring Boot(八):RabbitMQ 详解
http://www.ityouknow.com/springboot/2016/11/30/spring-boot-rabbitMQ.html RabbitMQ 即一个消息队列,主要是用来实现应用程 ...
- Spring Boot拦截器(Interceptor)详解
写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站. 文章目录 Interceptor 介绍 Interceptor 作用 自定义 Inte ...
- Spring Boot的Tomcat 启动详解
https://juejin.im/post/5a3273a451882575d42f68f9 在解读embeddedTomcat容器启动之前有几个要点需读懂 Spring Boot @Configu ...
最新文章
- cesium按路径飞
- BZOJ4129: Haruna’s Breakfast
- 微信的公众号为什么不做分类?
- oracle点勾算提交吗,oracle表结构和数据导出时的一些勾选项说明
- nfs数据同步备份:多节点nfs共享(mount)server节点数据
- 大小端、位段(惑位域)和内存对齐
- 去杠杆高歌猛进,借呗会倒闭吗?
- 【亲测有效】Kali Linux无法安装网易云音乐的解决方案
- 牛逼!国产开源的远程桌面火了,只有 9MB,支持自建中继器!
- kafka connect分布式安装
- SAP固定资产业务场景及方案
- 如何避免IE浏览器自动升级到版本11
- 计算机硬盘发展现状,固态硬盘的发展现状
- EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)
- 番茄花园洪磊,究竟错在哪里?
- mail.yahoo.com.cn:yahoo邮箱用outlook无法发信问题的解决办法
- push ebp到底是什么意思
- 《NFL橄榄球》:卡罗来纳黑豹·橄榄1号位
- C++反射:全方位解读Lura库的前世今生!
- format函数用法详解
热门文章
- 数据集:高考录取分数
- java为什么要连接Mysql_为什么要启动mysql workbech,java才能连接mysql数据库呢?
- LRN局部响应归一化
- ServletContext的用法
- 电脑电子版文件怎么弄_清空回收站后,如何找回删除的文件?
- Information Extraction
- Error in loadNamespace(name) : there is no package called ‘yaml’
- python 学习小结(1)
- 【博弈找规律问题汇总】
- 01串匹配问题 —— Binary Strings【Gym - 101845B】