Spring-从@Entity类

时间:2019-05-03 09:52:29

标签: java spring spring-boot

我有一个实体类:

@Entity
@Table(name = "user")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
public class User {

    @Id
    private long id;

    private String name;

    @Transient
    private String config;

    @PostLoad
    private void setConfig(){
        //I would like to initialize config (transient) field after loading from database using configuration from application.yml
    }

在setConfig()中,我想从application.yml中读取值。读这篇文章有什么可能? @Value不起作用。我也尝试使用静态类,但静态类不从配置文件读取值。

1 个答案:

答案 0 :(得分:1)

@Value仅在spring托管bean中使用时才有效。但是,实体不是由Spring管理的。

一种解决方案是在引导时读取某个托管Bean中的值,然后将其存储到某个静态变量中,然后就可以在setConfig()方法中读取此变量的值。

@Configuration
public class ApplicationStartupConfig implements ApplicationListener<ApplicationReadyEvent> {

    @Autowired
    private Environment env;

    private static String prop;

    @Override
    public void onApplicationEvent(final ApplicationReadyEvent event) {
        prop = env.getProperty("property.path");
    }
}