我们正在运行Spring设置,在那里我看不到任何XML配置文件,似乎一切都是通过注释完成的。
我在一个特定的包中有一些自定义组件类我需要添加到spring上下文中进行自动装配,我用@Component注释了这个类,但它没有什么区别。我错过了另一个注释吗?
我有一个循环,我需要进行组件扫描以发现包中的所有类,也许我可以将它们添加到那里,因为我已经有了BeanDefinition句柄。如果是这样,我该怎么做?
for (BeanDefinition bd : scanner.findCandidateComponents("com.blah.target")) {
// how to add it to context here?
}
答案 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这里解释得非常好。