Spring知识点记录

李德伦 发布于 2014/08/18 22:40
阅读 490
收藏 20

1. Spring配置文件不允许出现两个相同id的<bean>,但却可以出现两个相同name的<bean>,如果有多个name相同的<bean>,通过getBean(beanName)获取Bean时,将返回最后声明的那个Bean,原因是后面的Bean覆盖了前面同名的Bean。

2. 如果id和name都未指定,如<bean class="com.springmvc.example.App" />,Spring将使用全限定类名作为Bean的名称,就可以通过getBean("com.springmvc.example.App")获取App Bean。如果存在多个实现类相同的匿名<bean>,

   例如:

        <bean class="com.springmvc.example.App" />

        <bean class="com.springmvc.example.App" />

        <bean class="com.springmvc.example.App" />

  那么,第一个Bean通过getBean("com.springmvc.example.App")获得;第二个Bean通过getBean("com.springmvc.example.App#1")获得;第三个Bean通过getBean("com.springmvc.example.App#2")获得,依次类推。

3. 当启动Spring IoC容器时,如果存在循环依赖问题,Spring容器将无法成功启动。解决这个问题,只要将构造函数注入方式改为属性注入方式就可以了。

4. 通过util命名空间配置集合类型的Bean

    1)引入util的命名空间

    xmlns:util="http://www.springframework.org/schema/util"

    http://www.springframework.org/schema/util

    http://www.springframeword.org/schema/util/spring-util-3.1.xsd

  下面配置一个List类型的Bean,使其可以通过list-class显式指定List的实现类

   <util:list id="mylist" list-class="java.util.LinkedList">

       <value>值1</value>

       <value>值2</value>

       <value>值3</value>

   </util:list> 

    配置Map类型的Bean:

    <util:map id="myMap">

         <entry key="键1" value="值1"  />

         <entry key="键2" value="值2"  />

    </util:map>

5. 当扫描包时,通过过滤子元素来实现过滤某些包。

   <context:component-scan  base-package="com.springmvc">

        <context:include-filter type="regex" expression="com\.springmvc\.service.*" />

        <context:exclude-filter type="aspectj" expression="com.springmvc..*Controller+" />

  </context:component-scan>

  这里,<context:include-filter>表示要包含的目标类,<context:exclude-filter>表示要排除在外的目标类,一个<context:component-scan>下可以包含若干个<context:include-filter>和<context:exclude-filter>元素。这两个元素均支持多种类型的过滤表达式,如:annotation,assignable,aspectj,regex,custom,其中,regex使用正则表达式根据目标类的类名进行过滤。

6. Spring如果注入的Bean是个集合类,那么它将会把容器中所有匹配集合元素类型的所有Bean都注入进来。比如:

    @Autowired

   private List<Plugin> plugins ;

   这里Plugin是一个接口,它拥有两个实现类,分别是OnePlugin和TwoPlugin,这两个实现类都通过@Component或其他注释标注,那么Sping会将这两个Bean都注入到plugins中。

7. SpingMvc数据验证

    public class User{

        @Pattern(regexp="w{4,20}")   //通过正则表达式进行验证,匹配4~20个数字和字母以及下划线的字符

        private String userName ;

    }

    @Controller

    @RequestMapping("/user")

    public class UserController{

          ...

          @RequestMapping

          public String handlerValid(@Valid User user ,BindingResult bindingResult){

                 if(bindingResult.hasErrors){   //如果有错

                       return "/register";  

                 }else{

                      return "/showUser" ;

                }

          }

   }

    在页面中显示错误:

     1) <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

     2)<form:errors path="*" />    // 这里是显示所有错误信息

         <form:errors path="userName"  /> //显示userName属性的错误信息

加载中
0
优雅先生
优雅先生
有一点新的东西,谢谢分享
优雅先生
优雅先生
回复 @李德伦 : 不错,不过这些用法没必要全了解
李德伦
李德伦
呵呵,我只是记录一下,以后方便查阅
返回顶部
顶部