Контроллер
@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)