Как явно сослаться на Spring bean в выражении SpEL

Привет, у меня есть spring bean с именем «соединение» - как я могу явно ссылаться на это в выражении SpEL из веб-потока - явно я имею в виду, что я не хочу, чтобы SpEL пытался найти какие-либо другие переменные с именем «соединение», которые могут существовать в веб-потоке объем - это то, что я сейчас делаю:

<action-state id="initialise-connection">
    <evaluate result="flowScope.initialisedConnection" expression="connection"/>

Я читал о добавлении префикса "@" только к bean-компонентам - что является правильной практикой и как мне это сделать?


person user3738284    schedule 16.06.2014    source источник
comment
попробуйте #{connection}   -  person Vinay Lodha    schedule 20.06.2014


Ответы (2)


Тег evaluate используется для вызова метода компонента или метода execute() внутри подкласса Action класс

Например, если вы определяете свое собственное действие, оно должно быть инициализировано как @Component или определено как bean в вашем файле конфигурации XML.

@Component
public class MyAction {
   public Connection doSomething(RequestContext context){
    ...
   }
}

И в вашем файле определения потока XML вы бы просто назвали его так:

<evaluate result="flowScope.initialisedConnection" expression="myAction.doSomething( flowRequestContext)"/>

Но если вы определили подкласс Action, это будет так

@Component
public class MyAction implements Action {

   @Override
   public Event execute(RequestContext context) {
     ...
   }
}

И в вашем файле определения потока XML вы бы назвали это так:

<evaluate result="flowScope.initialisedConnection" expression="myAction"/>
person fujy    schedule 01.07.2014

Вот как я вызывал статический метод в своем классе. Пожалуйста, попробуйте это.

<action-state id="initialise-connection">
    <evaluate result="flowScope.initialisedConnection" expression="@com.app.connection.method()"/>
</acton>
person Hbargujar    schedule 01.07.2014