金牌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条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记