Spring框架常用注解及通配符总结

@Autowired 自动注入  默认是类型匹配

    使用配置文件需要set ,使用注解不需要,只需要类属性

               @Autowired可以和@Qualifier("beanName") 配合着使用

@Qualifier("beanName") 

    多个相同类型的bean,标注名称

@Scope

            单例模式还是原型模式

@Resource

    @Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配

    @Autowired是Spring的注解,@Resource是J2EE的注解

 

@Controller

@Controller对应控制层的Bean


@Service

    声明类是一个bean,且@Service对应的是业务层Bean

    Bean使用了该注解,默认id为类名首字母小写。

    @Service("abc")  bean起名字叫abc,括号内为特别定义的beanName


 

@ Repository

@Repository对应数据访问层Bean


@Component
@Component是所有受Spring 管理组件的通用形式,无法分组的Bean可以使用该注解,@Component不推荐使用。

 

@Lazy 表示是否延迟初始化(使用的时候再初始化)

 

 

 

注:

1.使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包)。

<context:component-scan base-package="a.b.c"/>

2.Spring通配符:一个*代表匹配任意字符,两个*匹配0或多层目录

如系统包含如下三个package:com.aaa.bbb.ccc    com.aaa.bbb.ddd   com.eee.fff.ccc   

如果在Spring中配置com.aaa.bbb.*,spring将会扫描com.aaa.bbb.ccc    com.aaa.bbb.ddd两个包

如果在Spring中配置com.**.ccc,会扫描com.aaa.bbb.ccc  com.eee.fff.ccc两个包

在网上看到一个问题,aaa包下面有一个A类,一般我们配置aaa包,即可扫描

配置aaa.*不能扫描,配置aaa.**可以扫描,这是为什么呢,因为aaa.*代表包的形式必须是aaa.xxx类型,如果我们目标Bean在aaa.xxx下自然可以扫描到,但在aaa下,不能被扫描。那为什么aaa.**可以被扫描呢,因为**代表0到多的概念,所以aaa包下的bean可以被扫描到。



end

如有错误,欢迎指正

猜你喜欢

转载自blog.csdn.net/wjw521wjw521/article/details/79393458