2.byType--把与Bean的属性具体相同类型的其他Bean自动装配到Bean的对应属性中。如果没有跟属性的名字匹配的Bean,则该属性不进行装配。
Spring2.5开始支持注解自动装配 在xml文件中配置 <context:annotation-config/> 开启对代码注解的扫描,
Spring3.0支持的自动装配的注解:
另注:@Resource(这个注解属于J2EE的)的标签,默认是按照byName方式注入的。
<自定义实现限定器注解>
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.beans.factory.annotation.Qualifier; /** * 自定义限定器,类似@Qualifier * @author xiaowen * */ @Target({ ElementType.FIELD, ElementType.TYPE,ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Qualifier public @interface Instrumet { }使用如下:
@Autowired @Instrumet private UserRepository userRepository
同@Autowired一样,可以自动装配属性/方法/构造器
不同的是@Inject没有required属性,因此@Inject注解所标注的依赖关系必须存在,否则抛出异常
限定@Inject所标注的属性@Named,功能同@Qualifier类似,
不同的是语义层面:Spring的@Qualifier主角可以帮助我们缩小匹配Bean的范围(默认使用Bean的ID),而@Named通过Bean的ID来标识可选择的Bean
<@Resource注解>
@Resource默认按byName装配,当找不到与名称匹配的bean才会按byType装配
<Spring的其他常用注解>
@Component-通用的构造型注解,标识该类为Spring的组件,需要搭配 component-scan 使用
@Controller-标识该类为前端控制层
@Service-标识该类为业务层
@Repository-标识该类为数据访问层
@Configuration- Spring 3.X 后提供的注解,用于取代 XML 来配置 Spring
@PropertySource-读取properties配置文件 (读取当前工程下指定的properties文件:
@PropertySource(value ={"file:${user.dir}/config/customize.properties","file:${user.dir}/config/graph.properties"}, ignoreResourceNotFound = true))