一、基本配置
1-1、入口类和@SpringBootApplication
SpringBoot的入口类通常是为xxxApplication.java的类。类里有一个main方法,用来启动SpringBoot项目。main方法如下:
package com.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args); //用来启动Springboot项目
}
}
@SpringBootApplication是SpringBoot的核心注解,源码如下:
/* * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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.context.TypeExcludeFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.core.annotation.AliasFor; /** * Indicates a {@link Configuration configuration} class that declares one or more * {@link Bean @Bean} methods and also triggers {@link EnableAutoConfiguration * auto-configuration} and {@link ComponentScan component scanning}. This is a convenience * annotation that is equivalent to declaring {@code @Configuration}, * {@code @EnableAutoConfiguration} and {@code @ComponentScan}. * * @author Phillip Webb * @author Stephane Nicoll * @since 1.2.0 */ @Target(ElementType.TYPE) //@Target说明了注解所修饰的对象范围 接口、类、枚举、注解 @Retention(RetentionPolicy.RUNTIME) //@Retention:注解的保留位置 @Documented //@Document:说明该注解将被包含在javadoc中 @Inherited //@Inherited:说明子类可以继承父类中的该注解 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { /** * Exclude specific auto-configuration classes such that they will never be applied. * @return the classes to exclude */ @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude") Class [] exclude() default {}; /** * Exclude specific auto-configuration class names such that they will never be * applied. * @return the class names to exclude * @since 1.3.0 */ @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "excludeName") String[] excludeName() default {}; /** * Base packages to scan for annotated components. Use {@link #scanBasePackageClasses} * for a type-safe alternative to String-based package names. * @return base packages to scan * @since 1.3.0 */ @AliasFor(annotation = ComponentScan.class, attribute = "basePackages") String[] scanBasePackages() default {}; /** * Type-safe alternative to {@link #scanBasePackages} for specifying the packages to * scan for annotated components. The package of each class specified will be scanned. *
* Consider creating a special no-op marker class or interface in each package that * serves no purpose other than being referenced by this attribute. * @return base packages to scan * @since 1.3.0 */ @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses") Class [] scanBasePackageClasses() default {}; }
@SpringBootConfiguration
@EnableAutoConfiguration 这个注解的主要作用是让Springboot根据类路径中的jar包依赖为当前项目进行自动配置
@ComponentScan
三个注解组成的一个复合注解
1-2、SpringBoot配置文件
SpringBoot有一个全局的配置文件,application.properties或者application.yml.一般放在src\main\resources\这个目录下面
这个全局配置文件的作用主要是对一些默认的配置进行修改,比如说tomcat的端口号、默认访问路径等等
配置如下:application.properties
server.port=8081
server.context-path=/springboot
1-3、配置文件定义属性
在开发中有时候我们会在配置文件中定义一些属性,Spring环境下我们需要通过@propertySource来指定配置文件位置。
然后在通过@value来进行注入
在SpringBoot中我们把这些属性配置到application.properties中后直接使用@value注入就行
如果在其他properties中定义属性需要指定配置文件位置
1-4、profile配置
profile是spring用来针对不同的环境采用不同的配置的支持,全局profile配置使用application-{profileName}.properties
通过application.properties中设置spring.profile.active=profileName来指定使用那个配置文件
1-5、命令行参数
SpringBoot可以基于jar包运行,
java -jar xx.jar --server.port=8081