当前位置: 首页 > 面试题库 >

在Spring 3中为组件扫描组织类的聪明方法是什么?

岳奇逸
2023-03-14
问题内容

我已经开始使用Spring 3进行新项目,并且正在使用注释。我喜欢我可以连接我的类以注入依赖项,但是我知道context:component- scan从基本包开始是一个不好的做法。

我正在使用一个DispatcherServlet具有自己的xml配置文件的文件。在那也是context:component- scan。刚开始学习Spring时,我在组件扫描中重叠了,看到多次创建bean。我想避免这种情况。

什么是组织我的程序包或组件扫描以覆盖所有bean而不重复的好方法?

目前,我有这样的软件包:

my.package.controller
my.package.dao
my.package.entity
my.package.service
my.package.util

如果我在所有这些程序包中都包含bean,那么似乎最简单的方法就是将它放入<context:component-scan base- package="my.package"></context:component-scan>applicationContext.xml中并完成它。

扫描my.package.controller分发程序的xml和applicationContext.xml中的其余文件(不包括my.package.controller)会更好吗?

还是应该将所有带注释的课程安排在一个区域中,而将其他所有内容安排在另一个区域中?就像是:

my.package.spring.controller
my.package.spring.dao
my.package.spring.entity
my.package.spring.service
my.package.spring.util
my.package.notannotated
my.package.notannotated2

我正在使用@Autowired向大多数(如果不是全部)类中添加日志记录,因此我不知道会有任何不会被注释的类。

我讨厌卡在配置中…我宁愿卡在代码中,所以如果有人可以提供任何提示,我将随时欢迎他们。

谢谢!


问题答案:

是的-在您的主要环境中,扫描除控制器外的所有物体

 <context:component-scan base-package="my.package">
    <context:exclude-filter type="regex" expression="my\.package\.controller.*"/>
 </context:component-scan>

在您的DispatcherServlet上下文中,只需扫描控制器包即可。



 类似资料:
  • 问题内容: 我目前正在使用Express(Node.js)构建的应用程序,我想知道在不同环境(开发,生产)下处理不同robots.txt的最聪明方法是什么。 这是我现在所拥有的,但是我对解决方案不满意,我认为它很脏: (注意:这是CoffeeScript) 应该有更好的方法。你会怎么做? 谢谢。 问题答案: 使用中间件功能。这样,robots.txt将在任何会话,cookieParser等之前进行

  • 我需要为类构建映射(字面上是

  • 问题内容: 那就是我的做法: 有什么好处吗?如何避免那些意粉般的代码? 问题答案: 检出异步库,它用于控制流(异步内容),并且它有很多用于数组内容的方法:每种方法,过滤器,映射。查看github上的文档。这可能是您需要的: 每个(arr,迭代器,回调) 将迭代器函数并行应用于数组中的每个项目。调用迭代器时,将使用列表中的项目以及完成时的回调。如果迭代器将错误传递给此回调,则该函数的主回调将立即被错

  • 在spring boot应用程序中,我有一个包含应用程序类包,如 默认情况下,它自动从该类的包中设置ComponentScan。然后我有几个子包,每个子包包含几个组件和服务bean(使用注释)。但是为了对不同的用例重用这个应用程序,我需要启用/禁用一些子包中的所有组件,最好是通过一个属性。 那就是我有一些子包,比如 现在,基于某些属性,我想在其中一个包中启用(扫描)bean,例如。 我以为我可以使

  • 我写了一个小程序,它检查字符串是否按照用户输入的字母顺序排序,并用空白隔开一行。它的工作,这是伟大的,但我不明白的是,为什么我可以使用扫描器创建数组时,大小还没有设置。任何见解都将不胜感激。

  • 我有一个eclipse java项目,在/src/main/java(包com.xxx.yyy)下。我还在/src/Test/java(包com.xxx.yyy)下有几个测试类。测试类(注释为@Service(value=“sampleclient”)公共类sampleclient{…}由位于/src/main/java下的一个包中的框架代码调用。 如果所有文件/包都位于/src/main/jav