Внедрение ресурса classpath в bean-компонент Spring 3 - PullRequest
29 голосов
/ 11 августа 2011

В моем бине Spring 3 есть свойство типа Resource , которое должно быть вставлено со ссылкой на файл в classpath.Я надеюсь использовать аннотацию @Value, указанную ниже, для достижения этой цели.

public class TestBean
{
    @Value("classpath:/abc/student/test.sql")
    private Resource SqlFile;
    ...
}

Но свойство всегда равно null.Я подтвердил, что файл sql был развернут в целевом каталоге maven (он находится в target / classes / abc / student / test.sql).

Наиболее близкими решениями, которые я мог бы найти в Google, были это и это , которые подробно описывают способ xml, тогда как я заинтересован в том, чтобы делать это с помощью аннотаций.

Цените любые указания на то, что здесь может быть не так.

Спасибо,

Виджай

Ответы [ 2 ]

42 голосов
/ 11 августа 2011

Если это будет жестко запрограммировано, просто

private Resource sqlFile = new ClassPathResource("/abc/student/test.sql");

В противном случае, то, что вы действительно хотите, это

@Value("${some.property}")
private Resource sqlFile;

и я считаю, что при введении значения свойства будет применяться правильный PropertyEditor.

0 голосов
/ 06 июля 2018

Если вы не хотите указывать свойство, тогда это должно работать

@Value("${:classpath:json/inventory.json}")
Resource inventory;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...