分享

Spring中的注解

 太极混元天尊 2018-04-13

一、Spring中注解的好处

大家都知道IoC容器是Spring的特色之一,管理很多Bean,要求这些Bean都配置在applicationContext.xml文件中。用了注解之后,就不需要在xml文件中配置了,Spring提供了几个辅助类会自动扫描和装配这些Bean。所以使用注解能大大减少xml文件的体积,Spring启动时会根据配置去扫描某些包里的类,得到类或方法上的注解,不同的注解会进行不同的操作。

二、 创建对象的注解

Spring中作用在类上的注解有@Component、@Responsity、@Service以及@Controller;当注解作用在类上时,表明这些类是交给spring容器进行管理的。

下面小编来给大家讲一讲@Component注解的使用:1开始注解扫描

2创建注解对象

在创建对象的类上面使用注解实现

在ComponentDemo类上加上@Component(value ='componentDemo')注解,就相当于在spring配置文件中配置了bean:3测试

运行结果:

Spring中提供了@的三个衍生注解:

(1)@Controller:通常用于Controller类,也就是控制层(MVC)。

(2)@Service:通常用于注解Service类,也就是服务层。

(3)@Repository:通常用于注解DAO类,也就是我们常说的持层。

这三个注解是为了让标注类本身的用途清晰,目前这四个注解功能是一样的,都创建对象。注解里面的value可以不需要写,默认为类名首字母小写。4@Scope注解        

@Scope注解的主要作用是解决创建的对象单实例还是多实例。

@Scope的默认值是singleton(单例模式),如果想创建多个对象,可以将Scope的值设为prototype,例如:@Scope(value='prototype')

三、 注解注入属性

@Autowired和@Resource是用来修饰字段、构造函数或者设置方法,并做注入的。

下面来具体说一说@Autowired的使用:1开始注解

2创建类

dao类

service类

3测试

运行结果:

四、@Autowired和@Resource的区别

@Autowired和@Resource的使用基本相似,下面主要说一下两者的区别:

1、 @Autowired是Spring提供的注解。

@Resource是J2EE提供的注解。

2、 @Autowired按照byType注入,默认情况下它要求依赖对象必须存在。

如果允许为null,可以设置它required属性为false,如果我们想使用名称装配,可以结合@Qualifier注解一起使用;    

@Resource默认按 byName 自动注入,@Resource有两个中重要的属性:name和type ,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用 type属性时则使用byType自动注入策略。

(1)如果既不指定默认按 byName 自动注入。

(2)如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不(3)到则抛出异常;

如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;Java资源社区

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多