我正在使用Spring 3.1并使用@Configuration和@ComponentScan属性引导应用程序.
实际开始是完成的
new AnnotationConfigApplicationContext(MyRootConfigurationClass.class);
Run Code Online (Sandbox Code Playgroud)
此Configuration类使用注释
@Configuration
@ComponentScan("com.my.package")
public class MyRootConfigurationClass
Run Code Online (Sandbox Code Playgroud)
这很好用.但是我想更具体地说明我扫描的软件包,所以我试过了.
@Configuration
@ComponentScan("com.my.package.first,com.my.package.second")
public class MyRootConfigurationClass
Run Code Online (Sandbox Code Playgroud)
但是,这会失败,并告诉我无法找到使用@Component注释指定的组件.
做我正在做的事情的正确方法是什么?
谢谢
当我第一次开始学习Spring时,在applicationContext.xml文件中配置了一些东西.然后当我开始专门阅读更新版本的spring时,他们都在单独的XML文件中完成了配置,例如myapp-servlet-xml,myapp-security.xml,myapp-service.xml等.在web.xml文件中配置contextConfigLocation.因此,例如,我一直关注的代码就是它的contextConfigLocation:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/myapp-servlet.xml
/WEB-INF/myapp-data.xml
</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
无论如何,最近我遇到了一个配置问题(StackOverflow的帮助人员帮助我弄清楚),这是由于这种分离.这些书中的示例没有applicationContext.xml文件,稍后当我尝试向应用程序添加自动扫描和注释时,这会导致问题.我尝试将所有内容移动到applicationContext.xml中并取消其他文件并解决了问题.没有其他改变,我只是将所有内容都放在applicationContext.xml中.
因此,这与其他人的评论一起使我有理解,即使您没有创建applicationContext.xml,它仍然被使用,并且它是某种配置层次结构的顶级.我希望其他人可以向我解释这一切是如何运作的,因为我没有在任何地方遇到任何解释.
因此,例如,如果我将某些上下文:组件扫描标记放入applicationContext.xml下面的配置文件中,则可能导致某些类无法扫描.那种性质的东西.我不明白优先级和必须去哪里确定应用程序的广泛性等等.如果有人能够清楚地解释它或指向我解释它的资源我会非常感激,谢谢.希望我所要求的是有道理的.
我正在维护一个包含两组主程序包的项目,该项目使用的是Spring和Spring MVC,其中一个程序包包含多个控制器,并使用XML configuration(<context:component-scan />)进行扫描.
问题是在另一个包中有一个类(未扫描),我需要扫描这个类,但只需要这个类,而不是包中的其他类.我现在无法改变它的包装,因为它现在风险太大了.
那么有没有办法使用注释或XML 来做到这一点?
我在src /文件夹中,例如多个包com.banking.controller,com.banking.dao,com.banking.service.我如何提供它们
<context:component-scan base-package=""/>
Run Code Online (Sandbox Code Playgroud)
每次使用相应的包名称进行上下文组件扫描时,是否必须单独添加包?