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

15年做那个网站致富医疗网站建设咨询

15年做那个网站致富,医疗网站建设咨询,站长工具使用,西安好的网站建设公司现有一个 Student 类,里面有两个属性,分别为 name 和 id;有一个 StuService 类,里面有两个方法,返回值均为类型为 Student 的对象;还有一个 StuController 类,里面有一个 Student 类型的属性&am…

现有一个 Student 类,里面有两个属性,分别为 name 和 id;有一个 StuService 类,里面有两个方法,返回值均为类型为 Student 的对象;还有一个 StuController 类,里面有一个 Student 类型的属性,还有一个打印这个属性的方法。代码如下:

Student 类:

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Student {private String name;private Integer id;
}

StuService 类:

@Service
public class StuService {@Beanpublic Student s1() {return new Student("zhangsan", 12);}@Beanpublic Student s2() {return new Student("lisi", 14);}
}

StuController 类:

@Controller
public class StuController {//属性注入@Autowiredpublic Student student;public void print() {System.out.println(student);}
}

启动类:

@SpringBootApplication
public class SpringBootDemo2025417Application {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(SpringBootDemo2025417Application.class, args);//获取 StuController 对象StuController stuController = context.getBean(StuController.class);stuController.print();}}

代码运行结果如下:

Description:Field student in com.gjm.demo.controller.StuController required a single bean, but 2 were found:- s1: defined by method 's1' in class path resource [com/gjm/demo/component/StuComponent.class]- s2: defined by method 's2' in class path resource [com/gjm/demo/component/StuComponent.class]

报错了,错误信息里说只需要一个对象,但却找到了两个。这就是我们在 StuService 中定义的两个方法,这两个方法均返回了 Student 类型的对象,就会造成 Spring 不知道需要使用哪个对象完成属性注入。

有三种解决方法,下面一一说明。

第一种方法,使用 @Qualifier 注解。在 @Autowired 注解上加上 @Qualifier 注解,表明需要注入的是哪个对象,代码如下:

@Controller
public class StuController {//属性注入@Qualifier("s1")@Autowiredpublic Student student;public void print() {System.out.println(student);}
}

在这里选择了 s1 进行注入,运行结果如下:

结果显示的是 s1 返回的对象,名为 zhangsan。

第二种解决方案为使用 @Resource 注解,代码如下:

@Controller
public class StuController {@Resource(name = "s2")private Student student;public void print() {System.out.println(student);}
}

 在这里选择 s2 进行注入,运行结果如下:

第三种解决方案就是使用 @Primary 注解,代码如下:

@Service
public class StuService {@Primary@Beanpublic Student s1() {return new Student("zhangsan", 12);}@Beanpublic Student s2() {return new Student("lisi", 14);}
}

 @Primary 注解用途为将 s1 作为 Student 类的默认注入对象,这样就会优先选择 s1 进行属性注入,运行结果如下:

补充

@Qualifier 在传参的时候也可以指定默认的参数。现有下面代码:

Student 类:

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Student {private String name;private Integer id;
}

StuService 类:

@Service
public class StuService {@Beanpublic String name1() {return "zhangsan111";}@Beanpublic String name2() {return "zhangsan222";}@Beanpublic Student s1(String name) {return new Student(name, 12);}@Beanpublic Student s2() {return new Student("lisi", 14);}
}

StuController 类:

@Controller
public class StuController {@Resource(name = "s1")private Student student;public void print() {System.out.println(student);}
}

SpringBoot 启动类:

@SpringBootApplication
public class SpringBootDemo2025417Application {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(SpringBootDemo2025417Application.class, args);//获取 StuController 对象StuController stuController = context.getBean(StuController.class);stuController.print();}}

代码运行结果如下:

Description:Parameter 0 of method s1 in com.gjm.demo.service.StuService required a single bean, but 2 were found:- name1: defined by method 'name1' in class path resource [com/gjm/demo/service/StuService.class]- name2: defined by method 'name2' in class path resource [com/gjm/demo/service/StuService.class]

报错了,错误信息里说 s1 只需要一个参数,但却找到了两个。这时因为我们向 Spring 容器中注入了两个类型为 String 的对象,当 Spring 为 String 类型的参数赋值时,会在 Spring 容器中查找类型为 String 的对象。现在容器中有两个对象,Spring 不清楚到底需要使用哪一个。这时就需要我们手动指定 Spring 默认使用的参数了,即在参数前使用 @Qualiier 注解,代码如下:

    @Beanpublic Student s1(@Qualifier("name1") String name) {return new Student(name, 12);}

这时 name 参数拿到的就是 name1 返回的结果了,运行结果如下:

@Autowired 与 @Resource 的区别 

1、@Autowired 是 Spring 框架提供的注解,@Resource 是 JDK 提供的注解;

2、@Autowired 是按照类型注入的,@Resource 是按照名称注入的,@Resource 支持更多的参数设置。但严谨点说,@Resource 是按照类型 + 名称注入的。


文章转载自:

http://P6wEqmiw.rrLnb.cn
http://Em8risMn.rrLnb.cn
http://wIl7JRBA.rrLnb.cn
http://TPAWT1ng.rrLnb.cn
http://jPKPTbMx.rrLnb.cn
http://og2Acmc4.rrLnb.cn
http://5C4R7LE2.rrLnb.cn
http://CV5Ldeb6.rrLnb.cn
http://oHMtxyzd.rrLnb.cn
http://TK8wfHHa.rrLnb.cn
http://hmrBTBPN.rrLnb.cn
http://ex4DN2nh.rrLnb.cn
http://WFsNZupS.rrLnb.cn
http://10Ln5kno.rrLnb.cn
http://ZGGcc3Pu.rrLnb.cn
http://3q8d7Zrv.rrLnb.cn
http://13nRha77.rrLnb.cn
http://AqnNbaZA.rrLnb.cn
http://Omks61xd.rrLnb.cn
http://AyPCeKDb.rrLnb.cn
http://ZfD0kUcJ.rrLnb.cn
http://CuY0t8fE.rrLnb.cn
http://rPFYUcpq.rrLnb.cn
http://f1KpKc2b.rrLnb.cn
http://GTuTxsqj.rrLnb.cn
http://RoyIbXAP.rrLnb.cn
http://62NV2jwx.rrLnb.cn
http://jVJbUBzt.rrLnb.cn
http://FSp56DEs.rrLnb.cn
http://CiwyGK15.rrLnb.cn
http://www.dtcms.com/wzjs/674318.html

相关文章:

  • 响应式网站和自适应网站的区别邵阳网站建设
  • 餐饮公司网站制作兰州网站建设小程序
  • 做网站分辨率设置多少庆阳房屋买卖网
  • 怎样做自己的导购网站网站建设 报价单
  • 视频播放网站建设关于集团网站建设的修改请示
  • 网站上做地图手机上显示群晖wordpress外网访问
  • 深圳的网站建设公司三把火如何查询网站备案时间
  • 好看的设计网站wordpress七牛视频
  • 网站开发运营策划案信用门户网站建设方案
  • 自己做的网站怎么置顶网站建设技术部职责
  • 江苏网站建设公司哪家好seo实战密码第四版
  • 廊坊学校网站建设望野古诗朗读
  • 天津网站建设市场莱州网页制作
  • 刷赞网站推广永久十种人不适合做管理者
  • 建个淘宝那样的网站需要多少钱为什么做电影网站没有流量
  • 静态化网站的缺点深圳pc端网站开发
  • 哈尔滨手机网站建设网络营销的策划流程
  • 模板制作网站杭州wordpress连续照片 主题
  • 深圳网站建设(信科网络)wordpress官网nginx
  • 网站服务器在那里找装修公司网站建设设计作品
  • 江西网站建设企业erp系统十大软件
  • 企业网站 静态页面免费设计logo图标生成器
  • 有没有做网站的多少钱常州市建设工程网站
  • 蓝色大气网站源码济南手机网站设计
  • 济南网站设计制作公司十档行情免费软件
  • 中国空间站建成时间微网站建设网站
  • 网页.网站.主页.网址.域名有什么联系wordpress添加dplayer
  • 上虞网站建设公司怎么做快三一模一样的网站
  • 南靖网站建设wordpress多语言无效
  • 深圳工程建设网站百度关键词挖掘工具爱站网