springboot注解
@configuration
- 告诉springboot这是一个配置类,配置类也是一个组件
- @Bean给容器中添加组件,方法名作为id,返回类型为组件类型,返回值为组件实例
- proxyBeanMethods属性:默认值为true,代理bean的方法,bean.get()可以获取容器中的实例,值为true的时候,多次调用get方法获取同一个实例对象;false会获取不同的实例对象
ConfigurableApplicationContext run = SpringApplication.run(UserProviderApplication.class, args);
String[] beanDefinitionNames = run.getBeanDefinitionNames();
UserService userService = run.getBean("userService", UserService.class);
@Import
- @Import({User.class, DBHelper.class})
- 给容器中自动创建出这两个类型的组件,组件默认的名字就是全类名
@Conditional
- 条件装配:满足conditional指定的条件,则继续组件注入
- 可以用在方法上或者类上面(满足条件时,类里面的所有配置才生效)
@ImportResource
@ImportResource("classpath:beans.xml")
public class Course {
}
@ConfigurationProperties(prefix = “xxx”)
- 配置绑定或者在springboot启动类上添加@EnableConfigurationProperties()
以上两个配置的使用必须是在容器中的组件使用
@SpringBootApplication
@Configuration public @interface SpringBootConfiguration { }
- @EnableAutoConfiguration
- 利用registrar给容器中导入一系列组件
- 将指定的一个包下的所有组件导入进来
@AutoConfigurationPackage //@Import(AutoConfigurationPackages.Registrar.class) //public @interface AutoConfigurationPackage { //} @Import(AutoConfigurationImportSelector.class) //利用getAutoConfigurationEntry(annotationMetadata);给容器中批量导入一些组件 //调用List configurations = getCandidateConfigurations(annotationMetadata, attributes);获取所有需要导入到容器中的配置类 public @interface EnableAutoConfiguration { }
- @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
springboot自动配置流程
- DispatcherServletAutoConfiguration:配置servlet相关
- springboot默认会在底层配好所有的组件,但以用户自己配置的优先
- 自动化配置有两种方法
@Bean
@ConditionalOnMissingBean(value = ThreadPoolTaskExecutor.class)
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {}
server:
servlet:
encoding:
charset: GBK
自动重启
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
ctrl + F9:代码修改自动重启
静态资源配置
- springboot启动默认加载xxxAutoConfiguration类(自动配置类)
- springMvc功能的自动配置类WebMvcAutoConfiguration
@Configuration(proxyBeanMethods = false)
@Import(EnableWebMvcConfiguration.class)
@EnableConfigurationProperties({ WebMvcProperties.class,
org.springframework.boot.autoconfigure.web.ResourceProperties.class, WebProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer {}
配置文件的相关属性和xxx绑定,WebMvcProperties == spring.mvc , ResourceProperties == spring.resources; 组件的有参构造器所有参数都会从容器中获取
请求映射
- DispatcherServlet
- FrameworkServlet
|