2012-05-12 26 views
3

下面是阅读Spring Reference所带来的问题,请大家帮忙。Spring 3框架上的一堆问题

(1)我是否需要手动创建ApplicationContext?我是否需要AplicationContext的第二个实例?

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

<context:annotation-config/> 
<context:component-scan base-package=".."/> 
<mvc:annotation-driven/> 

执行这些指令复制theirselfs?在哪种情况下,是的,其中没有?

(3)我有点坚持一切办法春介绍,从字符串转换为对象:属性编辑,转换,格式化.. 下面是一个简单的例子: 我有一个Spring MVC的控制器,它处理一些POST请求。该请求是填写某种表格的结果。表单是某个实体的Web表示。 因此,鉴于用户提交了一个新的项目表格。在这种形式下,存在一个日期字段和一个经理姓名字段,可以从现有经理名单中选择。输入的日期应该转换为Project对象的Date属性,并将经理名称 - 转换为Manager名称,通过该名称创建或定位(即,我想将Manager注入他的项目)。我应该在这种情况下使用什么?属性编辑器,格式化程序,还有其他的东西?

(4)一般来说,我可以说在classpath中找到的所有@interface类都可以被Spring用作注释吗? 换句话说,我怎么知道哪些注释可以在我的项目中使用?所有这些都可以在我的类路径中找到,或者我需要以某种方式注册它们? (5)我试图在没有aspectj.jar的情况下使用spring aop:只是为这个方面创建了一个Aspect和Addred XML定义(没有任何注释)。结果它抛出“没有发现的例外:org/aspectj/weaver/BCException”。 所以看起来像我不能使用没有aspectJ库的Spring AOP?

+3

这里的问题太多了。 –

回答

7

(1)我是否需要手动创建ApplicationContext?我是否需要AplicationContext的第二个实例?

春天通常是在两个环境USD - 在web开发和桌面应用程序/独立服务器。在前一种情况下,ApplicationContext是通过在Servlet 3.0容器中的web.xmlWebContextInitializer中定义的ContextLoaderListener自动创建的。

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


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

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


[...],输入的日期应该转换为项目对象的日期财产[...内@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发现如果在类路径中已启用,其他注释需要手动激活,见上面。


所以看起来像我不能没有的AspectJ库使用Spring AOP?

如果您仅使用接口代理(即,您只在实现至少一个接口的类上应用方面),则可以在不使用CGLIB的情况下使用Spring。否则,您需要CGLIB来动态创建子类。

+3

+1注释excel链接!!! – raddykrish