Ошибка при создании bean-компонента с именем: неудовлетворенная зависимость, выраженная через поле - PullRequest
0 голосов
/ 09 июля 2020

Контроллер

@Controller
public class AccountController {

    @Autowired
    AccountService accountService;

Сервис

@Service
public class AccountServiceImpl implements AccountService {

    @Autowired
    AccountDAO accountDao;
    
    
    //since we have added support for transaction manager
    //@Transactional is use to automatically begin and end transaction
    
    @Override
    @Transactional
    public boolean saveAccount(Account account) {
        return accountDao.saveAccount(account);
        //return false;
        // TODO Auto-generated method stub
        //return accountDao.saveAccount(account);
    }

DAO

@Repository
public class AccountDAOImpl implements AccountDAO {
    
    //we r @Autowiring sessionFactory cuz hibernate use sessionFactory for db connectivity
    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public boolean saveAccount(Account account) {
        boolean saveFlag = true;
        
        AccountEntity accountEntity = new AccountEntity();
        accountEntity.setAccountNo(account.getAccountNo());
        accountEntity.setAccountHolderName(account.getAccountHolderName());
        accountEntity.setAccountType(account.getAccountType());
        accountEntity.setAccountBalance(account.getAccountBalance());
        accountEntity.setDateOfBirth(account.getDateOfBirth());
        accountEntity.setPsCode(account.getPsCode());
        
        try {
            Session currentSession = sessionFactory.getCurrentSession();
            currentSession.save(accountEntity);
        } catch (Exception e) {
            e.printStackTrace();
            saveFlag = false;
        }
        
        return saveFlag;
    }

. xml

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/psbankdb?useSSL=false" />
        <property name="user" value="psbankdb" />
        <property name="password" value="123" />
    </bean>
    
    <!-- sessionFactory is used to connect with db using above dataSource(ref="dataSource)" -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" ref="com.ps.springmvc.psbankApp" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <!-- to display sql property on the console while execution -->
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
    
    <!-- TransactionManager it uses session factory as ref -->
    <bean id="myTransactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    
    <!-- it allow us to use annotation to eliminate manual coding to start and stop transaction -->
    <tx:annotation-driven transaction-manager="myTransactionManager" />

ошибка ниже

org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем 'accountController': неудовлетворенная зависимость, выраженная через поле 'accountService'; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем accountServiceImpl: неудовлетворенная зависимость, выраженная через поле accountDao; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем accountDAOImpl: неудовлетворенная зависимость, выраженная через поле sessionFactory; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'sessionFactory', определенным в ресурсе ServletContext [/WEB-INF/bankAppContext.xml]: не удается разрешить ссылку на bean-компонент com.ps.spring mvc .psbankApp 'при установке свойства bean-компонента packagesToScan; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного bean-компонента с именем com.ps.spring mvc .psbankApp 'org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor (AutoBeanPostProcessor). : 643) org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata. java: 130) org.springframework.beans.factory.annotation. .beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory. java: 1422) org.springframework.beans.factory.support.AbstractAutowireCutowireCapableBeanFactory. .AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory. java: 517) org.springframework.beans.factory.su pport.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory. java: 323)

...