spring boot详解编程语言
一、spring boot的优点
SpringBoot是伴随着Spring4.0诞生的; SpringBoot的目标是简化Spring的开发过程、让开发者快速搭建框架和web容器。并为微服务提供更好的支持,提供服务监控能力。Spring为开发者带来了简单和能力:
提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
二、spring boot技术支持
使用spring boot需要熟悉spring的技术基础,特别是IOC和AOP。
新建的spring boot的pom文件
projectxmlns="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 com.nes.spring.boot /groupId artifactId SpringBootDemo1 /artifactId version 0.0.1-SNAPSHOT /version parent groupId org.springframework.boot /groupId artifactId spring-boot-starter-parent /artifactId version 1.3.0.RELEASE /version /parent dependencies dependency groupId org.springframework.boot /groupId artifactId spring-boot-starter-web /artifactId /dependency /dependencies build plugins !-- Compile -- plugin groupId org.apache.maven.plugins /groupId artifactId maven-compiler-plugin /artifactId version 2.5.1 /version configuration source 1.7 /source target 1.7 /target /configuration /plugin !-- spring boot mavenplugin -- plugin groupId org.springframework.boot /groupId artifactId spring-boot-maven-plugin /artifactId dependencies dependency groupId org.springframework /groupId artifactId springloaded /artifactId version 1.2.5.RELEASE /version /dependency /dependencies /plugin /plugins /build /project
2.1 对pom的说明
首先是增加了,增加父pom比较简单,而且spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写版本号。
2.2添加spring-boot-starter-web依赖
Spring通过添加spring-boot-starter-*这样的依赖就能支持具体的某个功能。
我们这个示例最终是要实现web功能,所以添加的是这个依赖。
更完整的功能列表可以查看:Using-boot-starter-poms
2.3添加spring-boot-maven-plugin插件
该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。
在项目根目录下执行mvn package将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。该命令执行后还会保留一个XXX.jar.original的jar包,包含了项目中单独的部分。
生成这个可执行的jar包后,在命令行执行java -jar xxxx.jar即可启动项目。
另外一个命令就是mvn spring-boot:run,可以直接使用tomcat(默认)启动项目。
在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。
2.4spring-loaded热部署
Spring-Loaded项目提供了强大的热部署功能(自动更新),添加/删除/修改方法/字段/接口/枚举等代码的时候都可以热部署,速度很快,很方便。
想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖:
!-- 支持热部署 -- dependency groupId org.springframework /groupId artifactId springloaded /artifactId version 1.2.5.RELEASE /version /dependency
添加以后,通过mvn spring-boot:run启动就支持热部署了。
注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。
2.5创建一个应用类
@RestController @EnableAutoConfiguration public class Application { @RequestMapping("/") String home() { return"Hello World!"; @RequestMapping("/now") String hehe() { return"现在时间:" + (new Date()).toLocaleString(); public static void main(String[] args) { SpringApplication.run(Application.class, args); }
[email protected]
由于大量项目都会在主要的配置类上添加
@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。
因此Spring [email protected],该注解可以替代上面三个注解
@SpringBootApplication @PropertySource("classpath:application.yml") public class DemoApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }
为了扫描到所有的包,最好将执行类放在java包下,其他的文件都放在java包的子包下
@RestController
因为我们例子是写一个web应用,因此写的这个注解,[email protected]@ResponseBody注解。
1)[email protected],则Controller中的方法无法返回jsp页面或者html页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return里的内容。
例如:本来应该到index.html页面的,则其显示index。
2)如果需要返回到指定页面,[email protected]esolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,[email protected]
@EnableAutoConfiguration
Spring Boot建议只有一个带有该注解的类。
@EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。
例如当你项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存数据库的数据源DataSource,如果你自己创建了DataSource,Spring Boot就不会创建默认的DataSource。
如果你不想让Spring Boot自动创建,你可以配置注解的exclude属性,例如:
@Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) publicclassMyConfiguration { }
三、Spring Boot 属性配置和使用
Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置。
3.1Spring Boot 支持多种外部配置方式
这些方式优先级如下:
RandomValuePropertySource配置的random.*属性值 jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 jar包外部的application.properties或application.yml(不带spring.profile)配置文件 jar包内部的application.properties或application.yml(不带spring.profile)配置文件 @[email protected] [email protected]
注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: Isea533正确,name:Isea533就是错的。
3.3. Spring Boot 集成MyBatis
Spring Boot 集成MyBatis有两种方式,一种简单的方式就是使用MyBatis官方提供的:
mybatis-spring-boot-starter
另外一种方式就是仍然用类似mybatis-spring的配置方式,这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置。
3.2.1. mybatis-spring-boot-starter方式
在pom.xml中添加依赖:
dependency groupId org.mybatis.spring.boot /groupId artifactId mybatis-spring-boot-starter /artifactId version 1.0.0 /version /dependency
在配置文件中配置
datasource: url: jdbc:mysql://127.0.0.1:3306/jdbcstudy?characterEncoding=UTF-8 username: root password: nmdnbb123 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update
3.4 配置资源映射
在配置文件中添加
spring: mvc: view: prefix: /views/ suffix: .jsp
Spring Boot 默认配置的/映射到/static(或/public ,/resources,/META-INF/resources),/webjars/会映射到
classpath:/META-INF/reso
@Override publicvoidaddResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/mystatic/**") .addResourceLocations("classpath:/mystatic/"); }
使用WebJars
例如使用jquery,添加依赖:
urces/webjars/。
注意:上面的/static等目录都是在classpath:下面。
如果你想增加如/mystatic/**映射到classpath:/mystatic/,你可以让你的配置类继承WebMvcConfigurerAdapter,然后重写如下方法:
dependency groupId org.webjars /groupId artifactId jquery /artifactId version 1.11.3 /version /dependency
然后可以如下使用:
scripttype="text/javascript" src="/webjars/jquery/1.11.3/jquery.js" /script
4.4. 静态资源版本管理
Spring MVC 提供了静态资源版本映射的功能。
用途:当我们资源内容发生变化时,由于浏览器缓存,用户本地的静态资源还是旧的资源,为了防止这种情况导致的问题,我们可能会手动在请求url的时候加个版本号或者其他方式。
版本号如:
script type="text/javascript"src="/js/sample.js?v=1.0.1" /script
Spring MVC 提供的功能可以很容易的帮助我们解决类似问题。
Spring MVC 有两种解决方式。
注意:下面的配置方式针对freemarker模板方式,其他的配置方式可以参考。
资源名-md5 方式
link rel="stylesheet"type="text/css"href="/css/index-2b371326aa93ce4b611853a309b69b29.css"
Spring 会自动读取资源md5,然后添加到index.css的名字后面,因此当资源内容发生变化的时候,文件名发生变化,就会更新本地资源。
配置方式:
在application.properties中做如下配置:
spring.resources.chain.strategy.content.enabled=true spring.resources.chain.strategy.content.paths=/**
这样配置后,所有/**请求的静态资源都会被处理为上面例子的样子。
到这儿还没完,我们在写资源url的时候还要特殊处理。
首先增加如下配置:
@ControllerAdvice publicclassControllerConfig { @Autowired ResourceUrlProviderresourceUrlProvider; @ModelAttribute("urls") publicResourceUrlProviderurls() { returnthis.resourceUrlProvider; }
然后在页面写的时候用下面的写法:
linkrel="stylesheet"type="text/css"href="${urls.getForLookupPath(/css/index.css)}"
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/17293.html
cjavamysqlxml相关文章
- 玩转 Spring Boot 集成篇(@Scheduled、静态、动态定时任务)(七)
- spring boot框架搭建_springboot工作原理
- Spring 全家桶之 Spring Boot 2.6.4(五)- WebMvcAutoConfiguration(Part A)
- 解决在 Spring Boot 中运行 JUnit 测试遇到的 NoSuchMethodError 错误
- 使用SchedulerFactoryBean集成Quarz Job与Spring
- Spring Boot几种定时任务的实现方式
- SpringBoot:模块探究之spring-boot-cli
- IDEA顺序启动多个Spring Boot微服务
- Nacos 2.0的Spring Boot Starter来了!
- spring-boot教程详解编程语言
- 为什么越来越多的开发者选择使用Spring Boot详解编程语言
- spring boot中servlet启动原理详解编程语言
- 运行 Spring Boot 应用的 3 种方式详解编程语言
- Spring Boot Starters启动器详解编程语言
- Spring Boot中扩展XML请求和响应的支持详解编程语言
- Spring Boot 2 (三):Spring Boot 2 相关开源软件详解编程语言
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理详解编程语言
- Spring Boot(八):RabbitMQ详解编程语言
- Spring Boot(六):如何使用mybatis详解编程语言
- spring boot配置mybatis和事务管理详解编程语言
- spring boot 返回 JSON 数据详解编程语言
- java spring boot [email protected]编程语言