上一章节Spring boot入门, http://blog.csdn.net/qq_22860341/article/details/78930813
本章主要介绍spring boot的核心。java
*Spring 核心功能
*Spring 配置web
1. 独立运行的spring 项目spring
Spring Boot能够以jar的形式独立运行,运行一个Spring Boot项目只须要经过 java -jar xxx.jar命令来运行。tomcat
2. 内嵌servlet容器安全
Spring Boot能够选择内嵌Tomcat,Jetty或者Udertow,这样咱们不须要以war的形式部署项目。ruby
3. 提供starter简化maven配置
Spring 提供一系列starter pom来简化maven的依赖加载。好比加入spring-boot-starter-web。app
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot会自动加入Tomcat和Spring MVC的依赖。框架
4.自动配置Springssh
Spring boot会根据在类路径中的jar,类。为jar包里的类自动配置bean,这样极大减小咱们要是用的配置。固然并非全部的场景都是这样,有时候仍是须要去自定义配置的。maven
5.准生产的应用监控
Spring Boot提供了基于http,ssh,telnet对运行时的项目进行监控。
6,无代码生成和xml配置
Spring4.x提倡java配置和注解配置组合,二Spring Boot不须要任何xml便可实现spring配置。
7,Spring boot的优势
1.基本配置
(1),入口类和@SpringBootApplication
SpringBoot一般有一个名为*Application.java的入口类,入口类里面有一个main方法,这个main方法其实就是一个标准的Java应用的main方法,也是启动SpringBoot的方法。
@SpringBootApplication是SpringBoot的核心注解,它是一个核心注解,源码以下:
其中@EnableAutoconfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。
例如添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和SpringMVC进行自动配置。
例如添加了spring-boot-starter-data-jpa依赖,SpringBoot会自动进行JPA相关的配置。
SpringBoot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的bean.
(2)关闭特定的自动配置
关闭特定的自动配置使用@SpringBootApplication注解的exclude参数,例如
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
(3)定制Banner
1.1 修改banner
(1)当咱们启动SpringBoot时有一个默认图案。
(2)咱们在src/main/resources下新建一个banner.txt文件.
(3)经过http://patorjk.com/software/taag/网站生成字符,如输入shabi,将生成的字符图案复制到banner.txt中.
(4)从新运行SpringBoot项目,启动时图案就改变了。
1.2关闭Banner
main方法修改成:
public static void main(String[] args) {
//SpringApplication.run(DemoApplication.class, args);
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setShowbanner(false);
app.run(args);
}
或者fluent API修改成
new SpringApplicationBuilder(DemoApplication.class)
.showBanner(false)
.run(args);
高版本的Spring Boot没有app.setShowbanner(false);方法,我目使用1.5.9版本。能够在application.properties中配置:
spring.main.banner-mode=off
2,Spring Boot的配置文件
Spring Boot使用一个全局的配置文件application.properties或者application.yml放置在src/main/resources文件下或类路径的/config下。
Spring 不只支持常规的.properties配置文件,还支持yaml的配置文件,yaml是以数据为中心的语言,在配置数据的时候具备面向对象特征。
Spring Boot的全局配置文件的做用是对一些默认配置的配置值进行修改。
(1)简单示例
将tamcat默认的8080端口改成9090,并将默认的访问路径”/”修改成”/helloboot”;
在application.properties加入:
#不配置默认为8080端口
server.port=9090
#将默认的访问路径"/"修改成"/helloboot"
server.contextPath=/helloboot
说明:contextPath,context-path通用,这里不介绍application.yml配置。
3.starter pom
SpringBoot为咱们提供了简化企业级开发绝大多数场景的starter pom,只要使用了场景须要的starter pom,SpringBoot会自动配置bean。
好比以前说的添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和SpringMVC进行自动配置。
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
(3.1) 官方提供的starter pom
(3.2)第三方starter pom
配置方式
在pom.xml的project标签中加入:
<repositories>
<repository>
<id>惟一id</id>
<name>名称</name>
<url>url远程连接</url>
</repository>
<repository>
<id>lilyproject</id>
<name>Lily Maven repository</name>
<url>http://lilyproject.org/maven/maven2/deploy/</url>
</repository>
</repositories>
(3.3)使用xml配置
SpringBoot提倡零配置,即无XML配置,可是在实际开发过程当中,可能一些特殊的要求你必须使用xml配置,这时咱们可使用SpringBoot提供的@ImportResource来加载xml配置。
例如:
@ImportResource({"classpath:some-content.xml","classpath:another-content.xml"})
4,外部配置文件
SpringBoot容许使用properties文件,yaml文件,和命令参数做为外部配置。
(4.1)命令行参数配置
SpringBoot是基于jar运行的,打成jar的程序能够经过 下面命令直接运行的。
java -jar XXX.jar
能够经过如下命令修改tomcat端口:
java -jar XXX.jar --server.port=9090
(4.2)常规属性配置
在常规的Spring环境下,注入properties文件里面的值的方式,经过@propertySource指明文件位置,而后经过@Value注入值。
在SpringBoot项目中,咱们只须要在application.properties定义属性,直接使用@Value注入。
实例
在之前的基础上在application.properties文件增长:
user.myname=bobo
user.age=18
@Value注入
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloComtroller {
@Value("${user.myname}")
private String name;
@Value("${user.age}")
private Integer age;
@RequestMapping("/")
public String helloword(){
return "我叫"+name+",今年"+age+"岁!";
}
}
运行结果:
说明:这里若是定义user.name是获取系统的名称,后来改成myname。
(4.3)类安全的配置
以上使用@Value注入每一个配置显得格外的麻烦,由于咱们的配置一般有不少个,像那样每一个配置就要注入屡次。
SpringBoot提供了基于类型安全的配置方式,经过@ConfiggurationProperties将properties属性和一个bean及其属性关联,从而实现类型安全的配置。
基于之前的application.properties文件:
user.myname=bobo
user.age=18
固然咱们也能够新建properties文件,经过@ConfiggurationProperties的属性locations指定properties的位置,且须要在入口类上配置。
类型安全的bean以下:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="user")
public class UserSetting {
private String myname;
private Integer age;
public String getMyname() {
return myname;
}
public void setMyname(String myname) {
this.myname = myname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
代码解释:
经过@ConfigurationProperties加载文件的配置,prefix属性指定配置时的前缀,locations指定配置文件路径,本例将配置放在application.properties文件中,不须要指定位置。
若新建了properties文件,则须要在指定位置。
SpringBoot1.5以前能够经过@ConfigurationProperties的locations属性指定。
@ConfigurationProperties(prefix="user",locations="classpath:config/xxxxx.properties")
SpringBoot1.5以后使用:
@PropertySource("classpath:config/xxxxx.properties")
/*@PropertySource(value={""})*/
检查代码:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.entity.UserSetting;
@RestController
public class HelloComtroller {
@Autowired
private UserSetting userSetting;
@RequestMapping("/")
public String helloword(){
return "我叫"+userSetting.getMyname()+",今年"+userSetting.getAge()+"岁!";
}
}
代码解释:
使用@Autowired能够直接注入该配置。
(4.4)日志配置
SpringBoot支持java Util Logging,Log4j,Log4j2和Logback做为日志框架。
SpringBoot默认使用Logback做为日志框架。
配置日志级别:
#默认的Logback日志框架
logging.file=E:\\springBootWork\\mylog
配置日志文件,格式为logging.level.包名=级别
logging.level.org.springframework.web=DEBUG
(4.5)Profile配置
profile是Spring用来针对不一样的环境对不一样的配置提供支持,全局profile使用application-{profile}.properties,如application-prod.properties.
经过在application.properties文件中设置spring.profils.active=prod来指定活动的profile。
实例:
下面作一个简单的演示,如咱们分为生产环境和开发环境,生产环境下端口为8088,开发环境端口为8888.
新建
application-dev.properties文件中加入
server.port=8888
application-prod.properties文件中加入
server.port=8088
application.properties配置:
spring.profiles.active=prod
运行项目
本章节就介绍到这里,下一章节请关注Spring boot核心技术(二),将在春节以前写,主要讲解SpringBoot运行原理,核心注解,实战实例等,谢谢关注。