@Value具体用在什么环境,为什么我在springboot的入口和一个@Component类中写了注解,都是null?

jojo
  • 83
上海市

如题...自己新手。。对springboot理解的不够
代码如下:
入口类:main.java 我给cc这个属性添加了@Value,没有生效

package com.cc;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;


@SpringBootApplication
public class main {

    @Value("${abc}")
    private  String cc;
    public static void main(String[] args) {

        ApplicationContext ctx = SpringApplication.run(main.class, args);
        main m = new main();
        System.out.println(m.cc);
        student s = new student();
        s.test();

    }

}

main类中调用了一个java
student.java == 我给server属性添加了@Value,为什么都是null

package com.cc;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class student {
    @Value("${abc}")
    private String server;

    public void test() {
        System.out.println(this.server);
    }

}

配置application.properties
server.port = 8083
abc = aaaa

回复
阅读 448
1 个回答

既然把对象托管给了spring,那这里就不应该自己调用new student()来创建对象,应该用ctx.getBean("student")来获取到student对象,这时server就是已经赋值过的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏