Springboot——@Configuration和@Bean

@Configuration和@Bean的理解

1、在Springboot中,Starter为我们自动启用了很多Bean,这些Bean的配置信息通过properties的方式暴露出来以供使用人员调整参数,但并不是通过调整properties文件能配置所有的Bean,有些Bean的配置还是需要使用@Configuration方式,比如Spring Security的WebSecurityConfigurerAdapter配置等等。
2、我们自己编写的类通常使用 @controller @service 这些注入到我们容器当中。但是当我们使用第三方jar包中的类的时候,想注入到容器中就要使用@Configuration了。
3、在使用@Configuration之前,我们都是使用xml文件来实现注入,最常见的就是xml文件中的标签和标签了。其实@Configuration就相当于标签,@Bean就相当于标签。
4、在普通的Spring里使用@Configuration和@Bean,则要注意加上扫包配置或者使用注解@ComponentScan。而Springboot则不需要,因为它会自动扫包。

@Configuration和@Bean的使用

在对监听器、过滤器、拦截器等进行配置时就会用到@Configuration和@Bean,如:

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Bean
    public FilterRegistrationBean filterRegist() {
        FilterRegistrationBean frBean= new FilterRegistrationBean();
        frBean.setFilter(newMyFilter());
        frBean.addUrlPatterns("/*");
        return frBean;    
    }
    @Bean
    public ServletListenerRegistrationBean listenerRegist() {
        ServletListenerRegistrationBean srb=new ServletListenerRegistrationBean();
        srb.setListener(newMyHttpSessionListener());
        return srb;    
    }
    @Override
    public void addInterceptors(InterceptorRegistryregistry) {
registry.addInterceptor(newLoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login.html","/login");    
    }
}

@configuration和@component之间的区别

@Component注解的范围最广,所有自己写的类都可以注解,但是@Configuration注解一般注解在配置类上,起配置作用。

你可能感兴趣的:(Springboot——@Configuration和@Bean)