1. 如果你的配置文件写在根目录,则使用@ComponentScan不需要任何参数,所有配置的组件(@Component,@Service, @Repository, @Controller 等)都会自动注册为Spring Beans。
2. @SpringBootApplication注解等价于使用@Configuration,@EnableAutoConfiguration和@ComponentScan的默认属性(也可以进行自定义属性):
package com.example.myproject; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
3. 如果你要注册listener,不管application的创建方式,可以添加META-INF/spring.factories文件到你的项目,并使用org.springframework.context.ApplicationListerner键。
例:
org.springframework.context.ApplicationListener=com.example.project.MyListener
4. 如果你想在SpringApplication启动后运行一些代码,可以实现ApplicationRunner或CommandLineRunner接口,这两个接口提供一个run方法,此方法会在SpringApplication.run(...)完成前调用。
5. SpringApplication将在以下位置读取application.properties属性文件。
* 当前目录下的/config子目录
* 当前目录
* classpath下的/config
* 根目录
6. 静态内容默认的位置:/static , /public , /resources , /META-INF/resources
7. 模板引擎文件默认的位置:src/main/resources/templates(即根目录下的templates)
8. 默认错误界面:如果界面为静态界面,则文件名为对应的错误状态码,如404.html,将其放于静态目录下的error目录下。如果为动态页面,则放于动态界面目录下的error目录下,名字为错误状态码。
9. 自定义嵌入式servlet容器的配置:
Network setting: server.port,
Session setting: server.session.persistence
server.session.timeout
server.session.cookie.*
如果要通过编程方式配置,可以继承EmbeddedServletContainerCustomizer接口
import org.springframework.boot.context.embedded.*; import org.springframework.stereotype.Component;
@Component public class CustomizationBean implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(9000); } }