@Transactional в Spring MVC показывает проблему - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок на весеннем MVC, я только начал проект с конфигурацией на основе Java и при создании проекта я получил сообщение из журналов Tomcat:

SEVERE: Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'countryController': Unsatisfied dependency expressed through field 'countryService'; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'countryService' is expected to be of type 'com.djamel.service.CountryService' but was actually of type 'com.sun.proxy.$Proxy37'

Это мой класс CountryService:

@Service
public class CountryService implements Services<Country>{

    @Autowired
    CountryDao countryDao;

    @Autowired
    CityDao cityDao;

    ...

    @Transactional
    public Long add(Country country) {

       Long key = countryDao.add(country);

       if(!country.getCities().isEmpty()){
          for (City city : country.getCities()) {
              cityDao.add(key, city);
          }         
       }

       return (long) 1;
    }

    ...

}

А это мой класс конфигурации:

@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan(basePackages = "com.djamel")
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        ...
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        ...
    }   
}

Пожалуйста, как я могу решить эту проблему?

1 Ответ

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

Вы не опубликовали код своего контроллера или интерфейс сервиса. Однако из трассировки стека кажется, что Spring пытается удовлетворить зависимость, используя прокси интерфейса. Добавление квалификатора к вашей службе в контроллере должно исправить это. Что-то вроде:

public class CountryController{
..
@Autowired @Qualifier("CountryService")
private Services<Country> countryService;
..
..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...