Весна: @Value с ломбоком в другом классе

Можем ли мы использовать @Value с ломбоком?

Я создал класс ниже

@Getter
@Setter
class Hello
{

    @Value("${url}")
    private String url;

}

Можно ли повторно использовать значение URL-адреса String в другом классе, используя методы получения и установки lombok?


person Rocky4Ever    schedule 27.04.2020    source источник
comment
Конечно, вы можете его использовать, но вы также можете внедрить его в другой класс, используя @Value("${url}")   -  person Deadpool    schedule 27.04.2020


Ответы (2)


Конечно. Lombok создает геттеры и сеттеры, по умолчанию общедоступные, и поэтому они доступны для любого другого класса с использованием обычного синтаксиса геттеров / сеттеров. В этом случае вам просто нужно вызвать функцию:

yourHelloObject.getUrl()
person Carlos M.    schedule 27.04.2020
comment
Я пробовал использовать @Autowired hello, но не смог получить это значение из hello. - person Rocky4Ever; 27.04.2020

Да, но при этом еще нужно придерживаться правил автоподвода. Вам нужно дать фреймворку Spring для внедрения зависимостей возможность принять участие.

Если вы просто напишете

Hello hello = new Hello()
System.out.println(hello.getUrl()); // null

тогда результат будет нулевым.

Поскольку объекты могут оставаться в полуинициализированном состоянии, закачка в поле обычно не лучшая идея.

Это не имеет отношения к Ломбоку. Объект должен быть создан Spring. Один из способов сделать это - сделать его компонентом

@Component
@Getter
@Setter
class Hello
{
    @Value("${url}")
    private String url;
}

...

@Component
public class AnotherComponent {
    public AnotherComponent(Hello hello) { //constructor injection
        System.out.println(hello.getUrl()); //not null
    }
}
person Michael    schedule 27.04.2020