(1)我是否需要手动创建ApplicationContext?我是否需要AplicationContext的第二个实例?
(2)我们有以下配置说明:
<context:annotation-config/>
<context:component-scan base-package=".."/>
<mvc:annotation-driven/>
这些说明是否复制了它们自己的文件?在哪些情况下是,在哪些情况下不是?
(3)我对Spring介绍的从字符串转换为对象的所有方法都有些困惑:PropertyEditor、转换、格式化.. 下面是一个简单的用例: 我有一个处理POST请求的Spring MVC控制器。该请求是填写某些表格的结果。该表单是某个实体的Web表示。 因此,假设用户提交了一个新的项目表单。在该表格中有一个日期字段和一个经理姓名字段,可从现有经理列表中选择。应将输入的日期转换为项目对象的日期属性,以及使用此名称创建或定位的经理的姓名-经理属性(即,我要将经理注入到他的项目中)。在这种情况下,我应该使用什么?属性编辑器、格式化程序,还是其他? (4)一般来说,我可以说在类路径上找到的所有@接口类都可以被Spring用作注释吗? 换句话说,我如何知道我的项目中可以使用哪些批注?可以在我的类路径中找到的所有内容,还是我需要以某种方式注册它们?(5)我尝试在没有aspectj.jar的情况下使用Spring AOP:只是创建了一个方面并为该方面添加了XML定义(没有任何注释)。结果,它抛出"类未找到异常:org/AspectJ/weaver/BCException"。 看来我不能在没有AspectJ库的情况下使用Spring AOP?
推荐答案
(1)我是否需要手动创建ApplicationContext?我是否需要AplicationContext的第二个实例?
在两种环境中,Spring通常都是美元--在Web开发和桌面应用程序/独立服务器中。在前一种情况下,ApplicationContext
是通过Servlet 3.0容器中web.xml
或WebContextInitializer
中定义的ContextLoaderListener
自动创建的。
在后一种情况下(独立应用程序),您负责创建和销毁应用程序上下文。
(2)我们有以下配置说明:
<context:component-scan base-package=".."/>
提供了<context:annotation-config/>
plus的所有功能(惊喜!)组件扫描。<mvc:annotation-driven/>
是完全独立的,它可以识别像@Controller
这样的spring-mvc批注。
[...]输入的日期应转换为Project对象的Date属性[...]
在@Controller
内注册自定义编辑器:
@Controller
public class FooController {
@InitBinder
public void binder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
public void setAsText(String value) {
try {
setValue(new SimpleDateFormat("yy-MM-dd HH:mm:ss").parse(value));
} catch (ParseException e) {
setValue(null);
}
}
});
}
}
[...]我如何知道我的项目中可以使用哪些批注?[...]
我在一段时间前发现了这个awesome annotations support sheet(我不是作家)。它将告诉您启用了哪些批注。
我的类路径中可以找到的所有内容
@Inject
如果在CLASSPATH上找到它,则需要手动启用其他批注,请参见上文。
所以看起来没有AspectJ库我就不能使用Spring AOP?
如果您只使用接口代理(即,您只对实现至少一个接口的类应用方面),则可以使用不带CGLIB的Spring。否则,您需要CGLIB动态创建子类。
相关推荐
最新文章