Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现(此处可以参考博文https://blog.csdn.net/qq_41623154/article/details/104654953,关于springboot的属性注入,有详细讲解):
@Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件。
@Bean作用于方法上,其实就相当于xml配置文件中的bean,表示创建一个Bean,方法的返回值类型表示该Bean的类型,方法名表示该Bean的ID。
在Spring3.0,@Configuration用于定义配置类,相当于xml配置文件,在springboot项目中,用来替换xml配置文件。被注解的类内部包含有一个或多个@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bea定义,初始化spring容器。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/","/index.html","/login","/userLogin","/static/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
/*设置默认跳转的请求视图*/
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
registry.addViewController("/login").setViewName("login");
registry.addViewController("/main.html").setViewName("main");
}
}
注意点:@Configuration注解的配置类有以下要求:
- 配置类不可以是final类型;
- 配置类不可以是匿名类;
- 配置类嵌套的类必须是静态的;
@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>
,作用为:配置spring容器(应用上下文)
总结
@Configuation等价于<Beans></Beans>
@Bean等价于<Bean></Bean>
@ComponentScan等价于<context:component-scan base-package=”com.study.mapper”/>