SpringBoot13-springboot核心-基本配置
来源:互联网 发布:2003版办公软件 编辑:程序博客网 时间:2024/05/18 03:02
一:入口类和@SpringBootApplication
Spring Boot通常有一个名为*Applicationd的入口类,入口类里有一个main方法,这个main方法其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.run(class,args),启动Spring Boot应用项目。上一篇,我们建立了一个Spring Boot项目,启动Spring Boot的项目的代码如下:
package com.jack;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Springboot1Application {public static void main(String[] args) {SpringApplication.run(Springboot1Application.class, args);}}
@SpringBootApplication是Spring Boot的核心注解,它是一个组合注解,源码如下:
//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package org.springframework.boot.autoconfigure;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Inherited;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import org.springframework.boot.SpringBootConfiguration;import org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.context.TypeExcludeFilter;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.FilterType;import org.springframework.context.annotation.ComponentScan.Filter;import org.springframework.core.annotation.AliasFor;@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 { @AliasFor( annotation = EnableAutoConfiguration.class, attribute = "exclude" ) Class<?>[] exclude() default {}; @AliasFor( annotation = EnableAutoConfiguration.class, attribute = "excludeName" ) String[] excludeName() default {}; @AliasFor( annotation = ComponentScan.class, attribute = "basePackages" ) String[] scanBasePackages() default {}; @AliasFor( annotation = ComponentScan.class, attribute = "basePackageClasses" ) Class<?>[] scanBasePackageClasses() default {};}
@SpringBootApplication注解主要组合了@EnableAutoConfiguration,@SpringBootConfiguration,@ComponentScan,如不使用@SpringBootApplication注解,则可以在入口类之间使用@EnableAutoConfiguration,@SpringBootConfiguration,@ComponentScan。
其中@EnableAutoConfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。
例如,添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。
如果添加了spring-boot-starter-data-jpa依赖,Spring Boot会自动进行JPA相关的配置。
Spring Boot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean(若为JPA项目还可以扫描标注@Entity的实体类)。建议入口类放置的位置在groupId+arctifactID组合的包名下。
二:入口类和@SpringBootApplication
关闭特定的自动配置,通过上面的源码我们可以看出,关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数,例如:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
三:定制Banner
1,修改Banner
1)在Spring Boot启动的时候会有一个默认的启动图案,如下:
2)在src/main/resources下新建一个banner.txt
3)通过http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20网站生成字符串,如敲如jack,将网站生成的字符串复制到banner.txt中
4)这时再启动程序,图案将变成如下图所示:
2,关闭banner
1)main里的内容修改为:
package com.jack;import org.springframework.boot.Banner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})public class Springboot1Application { public static void main(String[] args) { //SpringApplication.run(Springboot1Application.class, args); //关闭banner SpringApplication app = new SpringApplication(Springboot1Application.class); app.setBannerMode(Banner.Mode.OFF); app.run(args); }}
2)或者使用fluent API修改为
package com.jack;import org.springframework.boot.Banner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.boot.builder.SpringApplicationBuilder;@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})public class Springboot1Application { public static void main(String[] args) { //SpringApplication.run(Springboot1Application.class, args); //关闭banner /*SpringApplication app = new SpringApplication(Springboot1Application.class); app.setBannerMode(Banner.Mode.OFF); app.run(args);*/ new SpringApplicationBuilder(Springboot1Application.class).bannerMode(Banner.Mode.OFF).run(args); }}
四:Spring Boot的配置文件
Spring Boot使用一个全局的配置文件application.properties或application.yml,放置在src/main/resources目录或者类路径的/config下,建议放在src/main/resources目录下。
1,简单示例
将tomcat的默认端口8080修改为8090,默认路径"/"修改为springboot1,可以在application.properties中添加:
server.port=8090server.context-path=/springboot
或者在application.yml
server: port: 8090 context-path: /springboot
在Spring Boot中context-path,contextPath或者CONTEXT_PATH新式其实是通用的。并且yaml的配置更简洁清晰。
五:使用xml配置
Spring Boot提倡零配置,即无xml配置,但是实际项目中,可能有一些特殊要求你必须使用xml配置,这时我们可以通过Spring提供的@ImportResource来加载xml配置,例如:@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"})
- SpringBoot13-springboot核心-基本配置
- 【SpringBoot】SpringBoot核心-基本配置
- 18-SpringBoot——核心-基本配置
- 【SpringBoot】SpringBoot核心-外部配置
- SpringBoot基本配置
- springboot基本配置
- SpringBoot基本配置
- springboot学习-基本配置helloworld
- springboot自动配置的核心原理
- Springboot的核心及相关配置
- 19-SpringBoot——核心-Profile配置
- 21-SpringBoot——核心-Web配置
- 22-SpringBoot——核心-Tomcat配置
- 23-SpringBoot——核心-Favicon配置
- SpringBoot14-springboot核心-外部配置,日志配置,Profile配置
- SpringBoot核心
- Spring Boot核心-基本配置
- Spring Boot核心--基本配置
- mysql去空缺排序
- IP设置和网关设置
- 7.29 队列
- UVa 10325 The Lottery 【容斥】【入门】
- Quicksum
- SpringBoot13-springboot核心-基本配置
- Leetcode_80_Remove Duplicates from Sorted Array II
- 暴力求解法--生成子集
- 安卓源代码核心结构
- Android Fragment
- jQuery ajax中使用serialize() 方法提交表单数据
- 7.29 队列
- 触摸屏代码分析——优化措施
- F