当前位置: 首页 > news >正文

网站死链怎么解决今日小说排行榜

网站死链怎么解决,今日小说排行榜,通常做网站的需求,做网站优化步骤直接看原文 原文链接: 【精选】Autowired和Resource注解的区别和联系【精选】 ------------------------------------------------------------------------------------------------------------------------------- 先说联系 联系 Autowired和Resource注解都是作为bean…

直接看原文

原文链接:

【精选】@Autowired和@Resource注解的区别和联系【精选】

-------------------------------------------------------------------------------------------------------------------------------

先说联系

联系

  1. @Autowired和@Resource注解都是作为bean对象注入的时候使用的
  2. 两者都可以声明在字段和setter方法上

注意:如果声明在字段上,那么就不需要再写setter方法。但是本质上,该对象还是作为set方法的实参,通过执行set方法注入,只是省略了setter方法罢了

区别

  1. @Autowired注解是Spring提供的,而@Resource注解是J2EE本身提供的
  2. @Autowird注解默认通过byType方式注入,而@Resource注解默认通过byName方式注入
  3. @Autowired注解注入的对象需要在IOC容器中存在,否则需要加上属性required=false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错

对于byName和byType方式不太熟悉的可以看一下这里:Spring中的byName与byType

简单来说,byName就是变量名去匹配bean的id属性,而byType则是变量类型去匹配bean的class属性

<bean id="userService" class="com.test.UserServiceImpl">
</bean> 
@Autowired
private UserService userService;

此处byName就是拿变量名userService去匹配IOC容器的iduserService,匹配成功;而byType就是拿变量类型UserService去匹配IOC容器的idcom.test.UserService.UserServiceImpl,因为UserServiceImpl是UserService实现,所以也匹配成功

接下来再分别讲讲@Autowired注解和@Resource注解的使用

@Autowird注解的使用

步骤:@Autowird默认的注入方式为byType,也就是根据类型匹配,当有多个实现时,则通过byName注入,也可以通过配合@Qualifier注解来显式指定name值,指明要使用哪个具体的实现类

举例:

首先有一个接口UserService和两个实现类UserServiceImpl1和UserServiceImpl2,并且这两个实现类已经加入到Spring的IOC容器中了

@Service
public class UserServiceImpl1 implements UserService@Service
public class UserServiceImpl2 implements UserService

在spring容器中的配置体现就是下面的, 下面的id默认就是类名首字母的小写,class就是全类名.

<bean id="userServiceImpl1 " class="com.test.UserServiceImpl1">
</bean> 
<bean id="userServiceImpl2 " class="com.test.UserServiceImpl2">
</bean> 

通过@Autowired注入使用

@Autowired
private UserService userService;

根据上面的步骤,可以很容易判断出,直接这么使用是会报错的
原因:首先通过byType注入(就是拿UserService去容器里找有么有UserService或者实现类是UserService的),判断UserService类型有两个实现,无法确定具体是哪一个,于是通过byName方式(就是拿变量名去和容器里id比较),这里的变量名userService也无法匹配IOC容器中id(此处指的userServiceImpl1和userServiceImpl2),于是报错。

注意:通过注解注入到IOC容器的id值默认是其类名首字母小写

解决方案

方式一:

// 方式一:改变变量名
@Autowired
private UserService userServiceImpl1;

方式二:

// 方式二:配合@Qualifier注解来显式指定name值
@Autowired
@Qualifier(value = "userServiceImpl1")
private UserService userService;

@Resource注解的使用

步骤:@Resource默认通过byName注入,如果没有匹配则通过byType注入

举例:

@Service
public class UserServiceImpl1 implements UserService@Service
public class UserServiceImpl2 implements UserService
@Resource
private UserService userService;

首先通过byName匹配,变量名userService无法匹配IOC容器中任何一个id(这里指的userServiceImpl1和userServiceImpl2),于是通过byType匹配,发现类型UserService的实现类有两个,仍然无法确定,于是报错。

同时@Resource还有两个重要的属性:name和type,用来显式指定byName和byType方式注入

使用:对应4种情况

// 1. 默认方式:byName
@Resource  
private UserService userDao; // 2. 指定byName
@Resource(name="userService")  
private UserService userService; // 3. 指定byType
@Resource(type=UserService.class)  
private UserService userService; // 4. 指定byName和byType
@Resource(name="userService",type=UserService.class)  
private UserService userService; 
  1. 既没指定name属性,也没指定type属性:默认通过byName方式注入,如果byName匹配失败,则使用byType方式注入(也就是上面的那个例子)
  2. 指定name属性:通过byName方式注入,把变量名和IOC容器中的id去匹配,匹配失败则报错
  3. 指定type属性:通过byType方式注入,在IOC容器中匹配对应的类型,如果匹配不到或者匹配到多个则报错
  4. 同时指定name属性和type属性:在IOC容器中匹配,名字和类型同时匹配则成功,否则失败

http://www.hkea.cn/news/954323/

相关文章:

  • 政府网站建设遵循的原则seo网站内容优化
  • java做网站具体步骤邵阳seo优化
  • 自己做的网站如何放进服务器今天今日头条新闻
  • 男装网站的网站建设背景惠州seo按天计费
  • 如何快速提高网站排名互联网项目推广
  • icp备案网站名称更改成都网站设计
  • 企业网站建设需求分析seo排名资源
  • python基础教程雪峰东莞搜索seo网站关键词优化
  • b2b网站开发供应商小程序开发教程全集免费
  • 用自己的手机做网站外链网站是什么
  • 市场调研公司介绍网站推广优化公司
  • 玉溪人民政府网站建设现状新网站seo
  • 湖南餐饮网站建设2023北京封控了
  • 重庆网站设计人员外贸网站搭建推广
  • 局域网内的网站建设西安网站建设公司排名
  • 普通网站报价多少中南建设集团有限公司
  • 蚌埠做网站哪家好全网营销国际系统
  • 沈阳市网站制作谷歌香港google搜索引擎入口
  • 做美食网站的背景高端网站建设制作
  • 文件什么上传到wordpress泉州seo技术
  • 网站地址地图怎么做网页制作的软件有哪些
  • 如何用万网建设网站口碑营销策划方案
  • 做网站的基础架构东莞seo建站公司
  • 嘉兴做网站的哪家好龙岗网站制作
  • 论坛做网站好吗百度官方网页
  • 微信开发者工具获取系统日期seo优化一般包括
  • 怎么用文本做网站百度排行榜风云榜
  • 未来网站开发需求多搜索网站有哪几个
  • 网站建设 成都郑州高端网站制作
  • 快站怎么做淘客网站深圳关键词