关于Spring3框架的一系列问题 [英] A bunch of questions on Spring 3 framework

查看:0
本文介绍了关于Spring3框架的一系列问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是阅读Spring参考时产生的问题,请帮助。

(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.xmlWebContextInitializer中定义的ContextLoaderListener自动创建的。

在后一种情况下(独立应用程序),您负责创建和销毁应用程序上下文。


(2)我们有以下配置说明:

<context:component-scan base-package=".."/>提供了<context:annotation-config/>plus的所有功能(惊喜!)组件扫描。<mvc:annotation-driven/>是完全独立的,它可以识别像@Controller这样的批注。


[...]输入的日期应转换为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动态创建子类。

这篇关于关于Spring3框架的一系列问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆