spring boot

一、spring boot的优点

 SpringBoot是伴随着Spring4.0诞生的; SpringBoot的目标是简化Spring的开发过程、让开发者快速搭建框架和web容器。并为微服务提供更好的支持,提供服务监控能力。Spring为开发者带来了简单和能力:

  • 为基于Spring的开发提供更快的入门体验

  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。

  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。

  • Spring Boot并不是对Spring功能上的增强,而是提供了一种快速使用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);
    }
}

创建执行类@SpringBootApplication 
由于大量项目都会在主要的配置类上添加 
@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。 
因此Spring Boot提供了@SpringBootApplication注解,该注解可以替代上面三个注解

@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应用,因此写的这个注解,这个注解相当于同时添加@Controller和@ResponseBody注解。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面或者html页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return里的内容。

例如:本来应该到index.html页面的,则其显示index

2)如果需要返回到指定页面,则需要用@Controller配合视图解析器InternalResourceViewResolver才行。

3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

 @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 支持多种外部配置方式 
这些方式优先级如下:

    1. 命令行参数
    2. 来自java:comp/env的JNDI属性
    3. Java系统属性(System.getProperties())
    4. 操作系统环境变量
    5. RandomValuePropertySource配置的random.*属性值
    6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
    9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
    10. @Configuration注解类上的@PropertySource
    11. 通过SpringApplication.setDefaultProperties指定的默认属性

3.2应用配置文件(.properties或.yml) 
在配置文件中直接写:

name=Isea533
server.port=8080

再yml文件中的配置方式

name: Isea533
  server:
    port: 8080

注意:使用.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')}">

 

转载于:https://www.cnblogs.com/14cn/p/9639453.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值