spring注解

 

使用 @Repository、@Service、@Controller 和 @Component 将类标识为 Bean,他们的作用,区别是什么?
在哪些情况下使用哪些?有哪些属性可以进行配置,这些属性的作用是什么?

@Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为 Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型;

在@Repository基础上扩展了@Service\@Controller\@Component声明Bean的方式;Spring 会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring 受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。

另外,除了上面的四个注解外,用户可以创建自定义的注解,然后在注解上标注 @Component,那么,该自定义注解便具有了与所 @Component 相同的功能。不过这个功能并不常用。


使用注解与之前的版本有什么优势,哪些情况下可以减少工作量?劣势又在哪里呢?

 

7个接口14种接口参数的文件封装,如果采用普通的接口方法实现方式,那么在处理方法类中需要引入很多的IF/ELSE判断和多个实现方法,复杂度增加。
    (模板方法)通过引入接口类,存放具体实现类的工厂MAP,将实现类在数据库中与接口和产品进行配置,这样减少了方法的复杂度,且各实现逻辑互不影响;
@Autowired
 private Map<String , GetEachInterfaceData(接口类)> getFileDetailMap

Spring 通过一个 BeanPostProcessor 对 @Autowired 进行解析,所以要让 @Autowired 起作用必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。 
这样,当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。
     当使用 byType 或者 constructor 类型的自动装配的时候,自动装配也支持引用类型的数组或者使用了泛型的集合,这样,Spring 就会检查容器中所有类型匹配的 Bean,组成集合或者数组后执行注入。对于使用了泛型的 Map 类型,如果键是 String 类型,则 Spring 也会自动执行装配,将所有类型匹配的 Bean 作为值,Bean 的名字作为键

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值