Конфиг два контроллера - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть два контроллера.

Я написал эти контроллеры и где я должен написать config для правильной работы.

@Controller

public class BookController {

    private BookService bookService;

    @Autowired(required = true)
    @Qualifier(value = "bookService")
    public void setBookService(BookService bookService) {
        this.bookService = bookService;
    }

    @RequestMapping(value = "books", method = RequestMethod.GET)
    public String listBooks(Model model){
        model.addAttribute("book", new Book());
        model.addAttribute("listBooks", this.bookService.listBooks());

        return "books";
    }

}

@Controller("controller1")
public class AuthorController {
        private AuthorService  authorService;

        @Autowired(required = true)
        @Qualifier(value = "authorService")
        public void setBookService(AuthorService authorService) {
            this.authorService = authorService;
        }

        @RequestMapping
        (value = "authors", method = RequestMethod.GET)
        public String listAuthors(Model model){
           model.addAttribute("author", new Author());
           model.addAttribute("listAuthors", this.authorService.list());

           return "";
        }
    }

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Вы можете автоматически подключить такие сервисы:

    @Controller
    @RequestMapping("book")
    public class BookController {

        @Autowired
        private BookService bookService;

        @GetMapping("find_all")
        public String list(Model model) {
            model.addAttribute("book", bookService.findAll());
            return "book/list";
        }
0 голосов
/ 13 сентября 2018

Если вы используете конфигурацию на основе XML, попробуйте добавить эту конфигурацию в ваш dispatcherServlet.xml

<context:component-scan base-package="com.example.controllers"/>

и если вы используете конфигурацию на основе Java, добавьте этот код в класс конфигурации реализации WebMvcConfigurerAdapter

@EnableWebMvc
@ComponentScan(basePackages = "com.example.controllers")

Пример:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controllers")
public class SpringConfig extends WebMvcConfigurerAdapter{

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/pages/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}
0 голосов
/ 13 сентября 2018

Ну, я считаю, что этого будет достаточно, чтобы добавить

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

в pom.xml и добавить @EnableWebMvc аннотацию в ваш файл AppConfig

UPD Допустим, у вас есть приложение com.foo.app.AppName Затем, чтобы решить проблему, вы должны создать класс com.foo.app.AppName.AppConfig и добавить по крайней мере следующее:

@Configuration
@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter {
}

Это не железное правило для реализации WebMvcConfigurerAdapter - вы можете использовать любые конфигураторы в зависимости от потребностей ypu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...