开启Spring注解减少XML配置

使用注解的好处

自Spring2.5就引入了很多注释类,可以使用注解配置完成大部分XML配置的功能,它可以利用Java反射机制获取类的结构信息,在服务器启动时会自动扫描装配.当一个项目变得越来越大,如果全部采用XML配置的方式,配置文件会变得越来越多越来越庞大,在XML文件与Java文件之间来回切换,就会变得非常繁琐且不利于维护。使用注解的方式,可以有效减少配置的工作, 提高可读性和可维护性。虽然注解的方式相对XML在服务器启动时解读的效率会低一些,但是几乎可以忽略。

在项目中开启注解

要使项目能支持注解并被有效识别,需要开启注解,在XML文件中配置:

<!-- 开启注解 -->
 <context:annotation-config />

<!-- 自动扫描组件,定义扫描路径。这里要把web下面的 controller去除,他们是在sk-servlet.xml中配置的,如果不去除会影响事务管理的。-->
<context:component-scan base-package="com.sk">
     <context:include-filter type="annotation"  
            expression="org.springframework.stereotype.Controller" />  
</context:component-scan>
  1. 在xml配置了这个标签后,spring可以自动去扫描base-package下面或者子孙包下面的java文件,如果扫描到有@Component @Controller@Service@Repository等这些注解的类,则把这些类注册为bean。 如果配置了<context:component-scan>标签,就可以不用配置<context:annotation-config>标签了。

  2. <context:component-scan>可以添加use-default-filters,spring配置中的use-default-filters用来指示是否自动扫描带有@Component、@Repository、@Service和@Controller的类。默认为true,即默认以上注解全部扫描。如果设置为false,则只会扫描所配置中指定的注解。如下面就只会扫描带有@Controller注解的:

<context:component-scan base-package="com.sk" use-default-filters="false">  
        <context:include-filter type="annotation"  
            expression="org.springframework.stereotype.Controller" />  
</context:component-scan> 
  1. 使用<context:include-filter/><context:exclude-filter />子标签来添加需要扫描的注解或者过滤掉某些注解。
<!--指定不扫描@Repository注解-->
<context:component-scan base-package="com.sk" use-default-filters="true">  
    <context:exclude-filter type="annotation"                 expression="org.springframework.stereotype.Repository"/>  
</context:component-scan>  
<!--指定扫描@Service注解-->
<context:component-scan base-package="com.sk"  use-default-filters="false">  
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>  
</context:component-scan>  

猜你喜欢

转载自blog.csdn.net/susu0510/article/details/77945132