spring mvc实用注解浅析

下面是几个spring mvc中比较常用的注解,本人闲暇之余做了些简单总结,参考自《spring 揭秘》,如有错误,请大家见谅,希望大家提出问题,一起解决问题

1.注解版的自动绑定(@Autowired)     @Autowired是基于注解的依赖注入的核心注解 ,他的存在可以让容器知道需要为当前类注入哪些依赖

public class NewsProvider{
           private INewsHello hello;
	   private INewsBy by;
	   @Autowired
	   public NewsProvider(INewsHello hello,INewsBy by){
	      this.hello = hello;
	      this.by = by;
	   }

      }

 or 属性:

public class NewsProvider{
            @Autowired
	    private INewsHello hello;
	    @Autowired
	    private INewsBy by;

         
      }

 ApplicationContext.xml配置加条语句:

<bean class="org.springframework.beans.factory.annotation.
  AutowiredAnnotationBeanPostProcessor"/>

 2.@Qualifier

如果被注入的对象有多个同一类型的实例,就必须使用@Qualifier("实例类型")

如:INewsHello有两个实现类ANewsHello和BNewsHello

如果我们想使用BNewsHello,则:
public class NewsProvider{
     @Autowired
     @Qualifier("bNewsHello")
     private INewsHello hello;
     @Autowired
     private INewsBy by;
}

 到了这里,我们可以看到配置文件里就只有哪些孤独的Bean的定义了!

3.  classpath-scanning(@component等)

使用相应的注解对相关的类进行标注后,classpath-scanning功能开始

扫描,当扫描到某个类标注了相应的标注后,就会自动创建给类的

bean,

 配置文件添加一句:
<beans>
 <context:component-scan base-package="org.spring21"/>
</beans>

 <context:component-scan>默认扫描的注解类型是:@Component

@Repository、@Service和@Controller,@Component泛指所有的组件

@Repository指持久层、Dao层,@Service指service层,@Controller指action层、控制层

如:
@Component
  public class NewsProvider{
            @Autowired
	    private INewsHello hello;
	    @Autowired
	    private INewsBy by;

         
      }

  到了这里,xml配置文件完全不用配置bean了。

4.自定义注解:

<beans>
     <context:component-scan base-package="org.spring21"/>
        <context: include-filter type="annotation" expression="cn.spring21.annotation.Hello"/>
        <context:exclude-filter type="aspectj" expression=".."
     </context:component-scan>
   </beans>

  上面我们增加了@Hello作为新的被扫描注解对象,并使用aspectj表达式排除某些扫描结果    include-filter和exclude-filter可以使用的type类型有annotation、assignable、regex和aspectj四种

相关推荐