如何将我的类包含在Spring上下文中?

时间:2015-11-24 19:04:14

标签: java spring

我们正在运行Spring设置,在那里我看不到任何XML配置文件,似乎一切都是通过注释完成的。

我在一个特定的包中有一些自定义组件类我需要添加到spring上下文中进行自动装配,我用@Component注释了这个类,但它没有什么区别。我错过了另一个注释吗?

我有一个循环,我需要进行组件扫描以发现包中的所有类,也许我可以将它们添加到那里,因为我已经有了BeanDefinition句柄。如果是这样,我该怎么做?

for (BeanDefinition bd : scanner.findCandidateComponents("com.blah.target")) {
  // how to add it to context here?
}

1 个答案:

答案 0 :(得分:1)

如果您没有看到任何XML配置文件,那么项目应该有一个包springconfig,其中包含一个名为WebConfig.java的java文件。这与XML配置文件完全等效。

以下是典型Webconfig.java的片段

package .....springconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
<...>


@Configuration
@EnableWebMvc
@ComponentScan(basePackages="<your source package>")
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("home");
    }

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry){      
          String dir="/resources/"; 
          registry.addResourceHandler("/images/**").addResourceLocations(dir + "images/");
          ...
        }        

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/view/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    @Bean
    public MultipartResolver multipartResolver() {
      CommonsMultipartResolver resolver = new CommonsMultipartResolver();
      resolver.setMaxUploadSize(100);
      return resolver;
    }

}

查看本教程:Simple Spring MVC Web Application这里解释得非常好。