在本文中,您将会了解到关于在Spring3中为组件扫描组织类的聪明方法是什么?的新资讯,同时我们还将为您解释spring组件扫描原理的相关在本文中,我们将带你探索在Spring3中为组件扫描组织类的聪
在本文中,您将会了解到关于在Spring 3中为组件扫描组织类的聪明方法是什么?的新资讯,同时我们还将为您解释spring组件扫描原理的相关在本文中,我们将带你探索在Spring 3中为组件扫描组织类的聪明方法是什么?的奥秘,分析spring组件扫描原理的特点,并给出一些关于java – Spring启动组件扫描包含单个类、java – 仅在Spring中如何通过注释配置组件扫描?、java – 在Spring 3中组织类进行组件扫描的智能方法是什么?、java – 在Spring-Hibernate项目中初始化实体集合(POJO)的正确方法是什么?的实用技巧。
本文目录一览:- 在Spring 3中为组件扫描组织类的聪明方法是什么?(spring组件扫描原理)
- java – Spring启动组件扫描包含单个类
- java – 仅在Spring中如何通过注释配置组件扫描?
- java – 在Spring 3中组织类进行组件扫描的智能方法是什么?
- java – 在Spring-Hibernate项目中初始化实体集合(POJO)的正确方法是什么?
在Spring 3中为组件扫描组织类的聪明方法是什么?(spring组件扫描原理)
我已经开始使用Spring 3进行新项目,并且正在使用注释。我喜欢我可以连接我的类以注入依赖项,但是我知道context:component-scan
从基本包开始是一个不好的做法。
我正在使用一个DispatcherServlet
具有自己的xml配置文件的文件。在那也是context:component-scan
。刚开始学习Spring时,我在组件扫描中重叠了,看到多次创建bean。我想避免这种情况。
什么是组织我的程序包或组件扫描以覆盖所有bean而不重复的好方法?
目前,我有这样的软件包:
my.package.controllermy.package.daomy.package.entitymy.package.servicemy.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.controllermy.package.spring.daomy.package.spring.entitymy.package.spring.servicemy.package.spring.utilmy.package.notannotatedmy.package.notannotated2
我正在使用@Autowired向大多数(如果不是全部)类中添加日志记录,因此我不知道会有任何不会被注释的类。
我讨厌卡在配置中…我宁愿卡在代码中,所以如果有人可以提供任何提示,我将随时欢迎他们。
谢谢!
答案1
小编典典是的-在您的主要环境中,扫描除控制器外的所有物体
<context:component-scan base-package="my.package"> <context:exclude-filter type="regex" expression="my\.package\.controller.*"/> </context:component-scan>
在您的DispatcherServlet上下文中,只需扫描控制器包即可。
java – Spring启动组件扫描包含单个类
参见英文答案 > Using @ComponentScan or
我使用spring组件扫描来
@ComponentScan({"com.org.x,com.org.y"})
问题是我希望扫描com.org.x中的所有类,但我想要一个单独的类,com.org.y.someService.class,单独从com.org.y扫描.
我怎样才能做到这一点?
除了使用上下文扫描之外,我如何创建这个bean并注入应用程序上下文?
java – 仅在Spring中如何通过注释配置组件扫描?
我有一个基于注释的配置为@Beans和一个xml配置为webservices:
@Configuration //@ComponentScan(basePackageClasses = ...) public class AppConfig { //beans @Bean }
applicationContext.xml中:
<beans> <context:component-scan base-package="..."/> <jaxws:endpoint ... /> </bean>
问题:我想通过注释定义@ComponentScan来具有类型安全性.但是如果我这样做,则不执行扫描.相比之下,当我使用< context:component-scan ..一切正常. Spring组件扫描是否与Web服务器中的xml配置绑定在一起进行扫描?
解决方法
就像是.
@Configuration @ComponentScan("com.company") // search the com.company package for @Component classes @ImportXml("classpath:com/company/data-access-config.xml") public class Config { }
java – 在Spring 3中组织类进行组件扫描的智能方法是什么?
我正在使用dispatcherServlet,它有自己的xml配置文件.这也是一个上下文:组件扫描.当我第一次开始学习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并完成它.
扫描调度程序的xml中的my.package.controller和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上下文中,只扫描控制器包.
java – 在Spring-Hibernate项目中初始化实体集合(POJO)的正确方法是什么?
此类项目还有标准的misc类:Foo和Bar的服务和dao.
我希望BarService获得与某些Foo相关联的Bar实例集.现在我有以下代码,我相信它在概念上很糟糕.
public class Foo { Set<Bar> bars; public Set<Bar> getBars() { if (bars == null) return ( bars = new HashSet() ); return bars; } }
public class BarServiceImpl { public List<Bar> getlistofBars(Foo foo) { return new ArrayList(foo.getBars()); } }
3个问题:
在哪里初始化Foo的Set更好?
哪些特定的集合和列表更适合此类目的?
我目前的实施有哪些概念性问题,以及如何做得更好?
提前致谢.
解决方法
ORM API提供了使用Objects而不是sql的自由.您应该在何时选择初始化Object的字段时要小心.例如,如果您有一个对象人员,其中包括姓名,年龄,联系人集合和访问过的城市.如果您对此人的姓名和年龄感兴趣而不是联系方式和城市,则应仅加载姓名和年龄.这意味着联系人和城市应该是懒惰的.
当您对联系感兴趣时,您只加载联系人而不是整个人物对象或通过人物对象.您可能只想使用Dao / Service加载一组联系人,并明确定义加载对象特定方面的方法(使用反向关联).
一些最好的休眠实践可以在 Best Practices找到.
更新:
1)实体不会自行填充.一种流行的方法是让DAO做这个Job.你的实体很简单
public class Foo { private Set<Bar> bar=new HashSet<Bar>(); public Set<Bar> getBar { return bar; } public void setBar(Bar bar) { this.bar = bar; } }
2)您可以在另一层(也称为服务层)中管理事务.
今天的关于在Spring 3中为组件扫描组织类的聪明方法是什么?和spring组件扫描原理的分享已经结束,谢谢您的关注,如果想了解更多关于java – Spring启动组件扫描包含单个类、java – 仅在Spring中如何通过注释配置组件扫描?、java – 在Spring 3中组织类进行组件扫描的智能方法是什么?、java – 在Spring-Hibernate项目中初始化实体集合(POJO)的正确方法是什么?的相关知识,请在本站进行查询。
本文标签: