Spring的主要益处之一是简化Java开发。主要通过以下方面来实现:
- 激发POJO的潜能
- 依赖注入
- 应用切面
- 使用模板消除样板式代码
每一部分都在Spring新版本中不断优化,使得层次更清楚而且还能适配各种使用场景。新版本不断提高JavaConfig的配置能力,增加各种注解的使用。
SpringBoot没有引入新的特性,但是更大地简化了Java的开发,减少了很多业务不相关的固定化配置。在微服务的应用中得到极大的使用。
Spring的主要四个特性为:
- Spring Boot Starter: 将常用的依赖分组进行整合,将其合并到一个依赖中,在Maven或Gradle构建中一次性添加到项目中。
- 自动配置:自动配置特性利用了Spring 4对条件华配置的支持,合理地推测应用所需的bean并自动化配置它们。
- 命令行接口-CLI
- Actuator:为Spring应用添加了管理特性。
特性补充:
- Starter减少了依赖的配置和传递依赖的版本控制。Starter实际使用了Maven和Gradle的依赖传递,Starter在自己的pom.xml文件中声明多个依赖,Starter的依赖会自动地传递性解析。 spring-boot-starter 实际上相当于一个基础的Starter
- 自动配置削减Spring的配置。如把Thymeleaf添加到项目的类路径中,Spring boot在探测到后会推测项目需要使用Thymeleaf实现Spring MVC的视图功能,会自动配置相关的bean。 Spring Boot Starter也会自动触发自动配置。例如,如想使用Spring MVC,将Web Starter作为依赖放在构建中即可。Spring会自动添加Spring MVC依赖,然后就能探测到Spring MVC位于类路径下,自动配置多个Spring MVC bean,包括视图解析器、资源处理器以及消息转换器。我们的主要开发就能在编写业务相关处理请求的控制器上。
举例最简单Spring Boot启动方式
console,service分离模式,前后端分离
Spring Boot启动类
@SpringBootApplication(scanBasePackages = {"com.xxx"})
@MapperScan("com.xxx")
public class Application extends SpringBootServletInitializer
{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(Application.class);
}
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
编写Startup.sh-添加第三方jar包路径和当前路径
typeset CLASSPS=$CLASSPATH
for i in `ls ./3rd/*.jar`
do
CLASSPS=$CLASSPS:$i
done
java $JAVA_OPTS -cp .:$CLASSPS:xxx-service-1.0.0.jar org.springframework.boot.loader.JarLauncher > /dev/null 2>&1 &
对应的MANIFEST.MF-通过Maven构建
Manifest-Version: 1.0
Implementation-Title: xxx-service
Implementation-Version: 1.0.0
Archiver-Version: Plexus Archiver
Built-By: root
Implementation-Vendor-Id: com.xxx
Spring-Boot-Version: 1.5.13.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.xxx.Application
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven
Build-Jdk: 1.8.0_144
properties/yml配置文件
SpringBoot为我们提供了application.properties配置文件,让我们可以进行自定义配置。SpringBoot会自动加载classpath类路径下的application.properties配置文件,或者可以通过手动加载或添加Properties工具类的方式。
- 1、配置文件的格式
SpringBoot可以识别两种格式的配置文件,分别是yml文件与properties文件,我们可以将application.properties文件换成application.yml,这两个文件都可以被SpringBoot自动识别并加载,但SpringBoot中注解方式暂时还并未提供手动加载yml格式文件的功能。如果是自定义的配置文件,就最好还是使用properties格式的文件。加载自定义属性文件的注解:@PropertySource(“classpath:xxx.properties”)
- 2、配置文件的加载
加载的意思就是将文件读取到Spring容器之中,更确切的说就是将各个配置项装载到Spring上下文容器之中供随时取用。
application.properties配置文件是在SpringBoot项目启动的时候被自动加载的,其内部的相关设置会自动覆盖SpringBoot默认的对应设置项,所以的配置项均会保存到Spring容器之中。
使用变量的方式-待确认补充
- @Value等注解方式
- Environment env环境变量 env.getProperty(xxx) --区分环境变量/系统属性/启动参数
- 编写Properties Util类,直接加载配置文件
附:Spring Boot中Mvc拦截器的JavaConfig形式
@Configuration
public class InterceptorConfigurer extends WebMvcConfigurerAdapter
{
private static final boolean iamEnable = true;
@Override
public void addInterceptors(InterceptorRegistry registry)
{
// 多个拦截器组成一个拦截器链
if (iamEnable)
{
registry.addInterceptor(new XXXInterceptor()).addPathPatterns("/**");
}
super.addInterceptors(registry);
}
}
相关基础介绍blog
https://www.zhihu.com/question/39483566
https://www.cnblogs.com/V1haoge/p/7183408.html
https://www.cnblogs.com/ityouknow/p/5662753.html
https://blog.csdn.net/hguisu/article/details/51072683
https://blog.csdn.net/gebitan505/article/details/54929287/
附:Java获取环境变量/系统属性/启动参数的方法
附:spring boot 拦截器之WebMvcConfigurerAdapter
…