我已经开始研究Spring Security了。我正在从this链接做一个HelloWorld应用程序。
我的问题是,为什么我们需要@Import
注释?
在使用Spring MVC时,我曾经定义过类似的配置文件,但由于它在同一个包中,我不需要导入它。为什么我在这里导入SecurityConfig.java
文件呢?
我使用@Import
注释的地方是这里
AppConfig.java
:
package com.mkyong.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@EnableWebMvc
@Configuration
@ComponentScan({ "com.mkyong.web.*" })
@Import({ SecurityConfig.class })
public class AppConfig {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver
= new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
答案 0 :(得分:1)
您需要将安全性导入主应用配置类,因为它不会被@ComponentScan
选中,因为该类不在扫描@ComponentScan({ "com.mkyong.web.*" })
的包中。安全配置未在那里定义。您注册主要类如:
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { AppConfig.class };
}
如果您没有将安全类导入其中,则安全性不会在应用程序中注册。