Spring Boot(一):入门篇

一、什么是 spring Boot?
Spring Boot 是由Pivotal团队提供的全新的框架,其设计目的是用来简化新的Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。(对Spring系列的框架进行了整合、简化)

二、Spring Boot 的特点
在编码、配置、部署、监控 上变的简单, 是微服务的入门级框架。

  • 内嵌了Tomcat(默认8080端口),无需部署war文件
  • logback提供日志记录
  • 简化maven配置
  • 自动spring配置

三、简单环境搭建
方式一、(了解)使用maven 构建SpringBoot应用程序
① 访问 http://start.spring.io/
② 选择构建构建工具 Maven Project、Spring Boot版本以及一些工程基本信息,点击“Switch to the full version”,选择Java版本1.8
这里写图片描述

③ 点击 Generate Project 下载项目压缩包,导入IDE工程中

方式二、(常用)手动构建springboot项目:使用Interlli IDEA 创建 Springboot+maven 项目

1、创建一个 Spring Initializr 工程
这里写图片描述
填写maven相关信息,
这里写图片描述
选择boot版本,勾选 “Web” 即可,
这里写图片描述
这里写图片描述
创建成功之后,默认的初始SpringBoot项目模块基本也就建立好了。

pom.xml中默认有两个模块:
spring-boot-starter: 核心模块,包括自动配置支持、日志和yaml
spring-boot-starter-test: 测试模块,Junit、Hamcrest、Mockito
项目结构:
这里写图片描述
在根目录下有一个 artifactId+Application命名规则的入口类,整个项目都会通过此类运行,有一个关键的注解
@SpringBootApplication,它的目的就是开启springboot自动配置。

四、boot项目的运行

1、为了能够看到明显的效果,在启动类上 再加一个注解: @RestController, 添加一个helloworld方法

package com.lbh;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringBootTestApplication {

    @RequestMapping("/")
    public String hello(){
        return "Hello World....";
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringBootTestApplication.class, args);
        System.out.println("==============Spring Boot Start===============");
    }
}

右键-运行,就能跑起来,不进行配置的话,默认端口号就是8080

这里写图片描述

五、原理解析

1、入口类
这个类中有一个main() 方法,此方法为标准Java应用程序的入口方法,这里用到了一个组合注解@SpringBootApplication,通过源码可以看出

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    ...
}

@SpringBootApplication 它组合了 @SpringBootConfiguration、@EnableAutoConfiguration以及@ComponentScan,
@SpringBootConfiguration:表明这个类是个配置类;
@EnableAutoConfiguration:表示让SpringBoot根据类路径下的jar包依赖为当前项目进行自动配置;
@ ComponentScan:表示此类的路径会被spring自动扫描并装入bean容器中。
使用@SpringBootApplication这个注解了系统回去入口类的同级包中去扫描实体类,建议入口类位置在 groupId+arctifactID组合的包名下。

2、关闭特定的自动配置

@ComponentScan注解是有一个过滤器的,如果我们只想要@SpringBootApplication去扫描特定的类而不是全部类,那么就可以关闭自动配置

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

3、启动Banner 图案修改或关闭

1.在src/main/resources下新建一个banner.txt文档 
2.通过http://patorjk.com/software/taag网站生成需要的字符,将字符拷贝到步骤1所创建的txt文档中,比如我这里为Hi,lbh's Boot... 生成字符, 将字符图案拷贝到 文档里重启即可;

这里写图片描述
关闭Banner:修改一下main()方法代码即可

public static void main(String[] args) {
    //SpringApplication.run(SpringBootTestApplication.class, args);
    SpringApplicationBuilder builder = new SpringApplicationBuilder(SpringBootTestApplication.class);
    //修改banner的模式为off
    builder.bannerMode(Banner.Mode.OFF).run(args);
    System.out.println("==============Spring Boot Start===============");
}

4、application.yaml 或 application.properties配置文件

server.context-path=/HelloBoot     #项目访问路径
server.port=1111                             # Tomcat端口 1111

#常规普通属性配置
book.name=我们仨
book.author=杨绛
book.pinyin=womensa

#解决中文乱码问题 
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

然后 在IntelliJ IDEA中依次点击File -> Settings -> Editor -> File Encodings,将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。(参考【Springboot 之 解决IDEA读取properties配置文件的中文乱码问题】【Springboot 之 解决IDEA读取properties配置文件的中文乱码问题】)。

在类中使用 @Valid() 注解就可以了

@Value("${book.name}")
private String name;
@Value("${book.author}")
private String author;
@Value("${book.pinyin}")
private String pinyin;

@RequestMapping("/")
public String hello(){
    return "Hello World..《 "+name+" 》"+author+" --> "+pinyin;
}

这里写图片描述

5、类型安全配置
就是将properties配置文件与bean类关联在一起,使用更方便、安全
①、创建book.properties

book.name=倾城之恋
book.author=张爱玲
book.price=35

②、创建book实体类

@Component
@ConfigurationProperties(prefix = "book")    //前缀
@PropertySource("classpath:book.properties")  //文件位置
public class Book {

private String name;
private String author;
private String price;

getter()   setter()  方法

toString()
}

③、Controller使用

@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private Book book;

    @RequestMapping("/getBook")
    public String getBookDetial(){
        return book.getAuthor()+" 《 "+ book.getName()+ " 》"+ book.getPrice();
    }

}

这里写图片描述
6、日志配置

Spring boot 默认使用Logback作为日志框架,我们可以手动配置日志级别以及日志输出位置。

logging.file=E:/ideaworkspaces/ChoiceSCM/SprintBootDemo/BootLog.log
logging.level.org.springframework.web=debug

7、Profile配置问题

全局Profile配置使用 application-{profile}.properties来定义, 然后在application.properties中通过spring.profiles.active来指定使用哪个Profile。
在 resources 下分别建立不同的配置文件 application-dev.properties(开发环境)、application-prod.properties(生产环境);
在application.properties中进行配置

spring.profiles.active=dev  #使用开发环境的配置

参考:《 JavaEE开发的颠覆者 Spring Boot实战》第五章、第六章

http://blog.csdn.net/u012702547/article/details/53740047

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值