2017-02-17 9 views
0

У меня есть этот файл .groovyОшибка в заводной фасоли

@RestController 
class SimpleBeanApp{ 

    @Autowired 
    String text 

    @RequestMapping("/") 
    String index(){ 
     "You can do: ${text}!" 
    } 

    beans { 
     text String, "-Spring Boot with Groovy beans-" 
    } 

} 

Когда я запустить его у меня есть

файла ... beans.groovy: 12: неожиданный лексем: бобы @ линии 12, колонка 2. бобы

который является beans{, я попытался добавить аннотацию @Bean перед тем beans но он не работает.

+2

Что такое «бобы»? Это неправда Groovy afaik –

ответ

0

Вы пытаетесь ввести String text аннотацию @Autowired в начале вашего класса контроллера.

Весенние поисковые бобы с типами String в областях его впрыска. Строка, которая не компилируется, должна была предоставить этот недостающий компонент.

Я не знаком с заводной, но он должен выглядеть примерно так:

@Bean 
String text() { 
    return "-Spring Boot with Groovy beans-" 
} 

Вот как вы создаете компонент типа String и имя text. Он будет найден рамкой для инъекций зависимостей пружин и связан с полем @Autowired в верхней части вашего контроллера.

0

Что такое мана sugests - это «Java». Он будет работать, но не очень хорош. Действительно, groovy СЛЕДУЕТ позволить вам создавать бобы в более «groovy» образом; обеспечивая закрытие боба.

Я сам искал ту же проблему сегодня. Оказалось, что я должен был выяснить сам ... Итак, предоставляю здесь свои 2 цента.

Это определение «бобов» на самом деле метод, принадлежащий к GroovyBeanDefinitionReader

Итак, вам нужно создать один такой класс и вызывать его метод «ФАСОЛЕЙ» обеспечивая его замыкание будет определение фасоли, как в примере в джавадоке. (Я люблю отличные, но время от времени мне кажется, что мне нужно понять, что означает код в модере C-программиста, чтобы понять, что я действительно делаю ... должен быть связан со старением ...)

Обратите внимание, что вам нужно овладеть контекстом приложения. Один из способов я нашел (там может быть более эффективными способами) являются:

class SimpleBeanApp implements ApplicationContextAware { 
    ... 
    @Override 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
     def beanConfig = new GroovyBeanDefinitionReader(applicationContext) 
     beanConfig.beans { 
      text String, "-Spring Boot with Groovy beans-" 
     } 
    } 
} 

Или, вы также можете поместить вашу конфигурацию фасоли в отдельном заводном сценарии для загрузки при настройке вашего пружинного приложения. Как:

static void main(String[] args) { 
    SpringApplication.run ([DemoApplication,new ClassPathResource('/DemoConfig.groovy')] as Object[], args) 
} 

И поставил в DemoConfig.groovy файл конфигурации компонентов:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

beans { 
    ... 
} 

Обратите внимание, что DemoConfig.groovy должны быть расположены в: /src/main/resources/DemoConfig.groovy

 Смежные вопросы

  • Нет связанных вопросов^_^