如何像Spring一样实现@bean

时间:2016-10-30 10:14:13

标签: java spring

@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {

    @Bean
    AuthorizeInterceptor authorizelInterceptor() {
        return new AuthorizeInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(authorizelInterceptor()).addPathPatterns("/user/**");
         super.addInterceptors(registry);
    }
}

我认为@Bean会将new AuthorizeInterceptor();放入IOC,而方法addInterceptors()调用authorizelInterceptor()将会在IOC中注册bean。如果使用代理,则authorizelInterceptor()中调用的方法addInterceptors()将不会执行代理。

1 个答案:

答案 0 :(得分:1)

@Bean是一个方法级注释,它只是将bean配置提供给Spring容器,容器使用它来注入相应的依赖项。简而言之,它只是使用xml <bean/>标记定义bean的替代方法。

我在编写简单单元测试时通常使用@Bean,在同一个Test类文件中提供bean定义(而不是为bean配置定义单独的xml)。

我建议您通过以下链接了解更多详情:

http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch02s02.html