金牌28号技师 2021-03-09 19:07 采纳率: 25%
浏览 302
已采纳

spring同时使用构造器和注解注入引发的属性冲突

这是applicationcontext.xml构造器的bean
通过list注入到注解的list中去
  <util:list id="list">
        <value>网络工程</value>
        <value>计算机网络</value>
        <value>Android</value>
        <value>ASP.NET</value>
    </util:list> 

构造器的bean
<bean id="stu2" class="com.cyh.Student" >
        <constructor-arg index="0" value="105"/>
        <constructor-arg index="1" value="陈玉航"/>
        <constructor-arg index="2" value="计算机科学与技术"/>
        <constructor-arg index="3" >
            <list>
                <value>"Android课程"</value>
                <value>"ASP.NET课程"</value>
                <value>"SSM课程"</value>
                <value>"网络工程"</value>
            </list>
        </constructor-arg>
    </bean>

这是student.java文件

@Component("stu3")
public class Student {
   @Value("105")
    private int sno;

    @Value("陈玉航")
    private String sname;

    @Value("计算机科学与技术")
    private String major;

     @Value("#{list}")
    private List<String> required;

Main测试方法

 public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("ApplicationContext.xml");
        //属性注入
        System.out.println( applicationContext.getBean("stu1"));
       // 构造注入
       System.out.println(applicationContext.getBean("stu2"));
        //注解
        System.out.println(applicationContext.getBean("stu3"));
    }

得到的结果是stu2的和stu3的数据一样

Student{sno=105, sname='陈玉航', major='计算机科学与技术', required=["SSM课程", "网络工程", "Android课程", "ASP.NET课程"]}
Student{sno=105, sname='陈玉航', major='计算机科学与技术', required=[网络工程, 计算机网络, Android, ASP.NET]}
Student{sno=105, sname='陈玉航', major='计算机科学与技术', required=[网络工程, 计算机网络, Android, ASP.NET]}

(去掉tostring方法后发现stu2和stu3的地址是不一样的),这是老师发的实验报告,所以需要三种方法一起用,如果有优先级,为啥属性注入没有受影响,脑壳疼。。。求大神解答一下。跪谢。

  • 写回答

2条回答 默认 最新

  • 关注

    stu2,stu3 是两个对象(Bean),  只不过属性值是一样。你可以在注解里改一下 sname 注入的属性值,比如将 “陈玉航” 改为 “陈玉航3” 再运行下代码试试。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥15 小红薯封设备能解决的来
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'
  • ¥15 vue+element项目中多tag时,切换Tab时iframe套第三方html页面需要实现不刷新
  • ¥50 深度强化学习解决能源调度问题