Spring MVC 中的@Transactional 显示问题
@Transactional in Spring MVC showing problem
我是 spring 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 class :
@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;
}
...
}
这是我的配置 Class :
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan(basePackages = "com.djamel")
public class AppConfig {
@Bean
public DataSource dataSource() {
...
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
...
}
}
请问,我该如何解决这个问题?
您没有 post 您的控制器代码或服务接口。
但是,从堆栈跟踪看来 Spring 正在尝试使用接口代理来满足依赖关系。
在控制器中向您的服务添加限定符应该可以修复它。
类似于:
public class CountryController{
..
@Autowired @Qualifier("CountryService")
private Services<Country> countryService;
..
..
}
我是 spring 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 class :
@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;
}
...
}
这是我的配置 Class :
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan(basePackages = "com.djamel")
public class AppConfig {
@Bean
public DataSource dataSource() {
...
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
...
}
}
请问,我该如何解决这个问题?
您没有 post 您的控制器代码或服务接口。 但是,从堆栈跟踪看来 Spring 正在尝试使用接口代理来满足依赖关系。 在控制器中向您的服务添加限定符应该可以修复它。 类似于:
public class CountryController{
..
@Autowired @Qualifier("CountryService")
private Services<Country> countryService;
..
..
}