我第一次使用Spring MVC和Hibernate,每次使用Repository将数据库添加到数据库时它会输入两次。 我试着看看是否还有其他地方正在创建Beans并且我看不到任何东西
弹簧servlet.xml中
<context:component-scan base-package="com.controllers"/>
<context:component-scan base-package="repositories"/>
<!-- This sets the default home page-->
<view-controller path="/" view-name="/login"/>
<!-- Sets the default path for all the Resources -->
<resources mapping="/resources/**" location="/resources/" />
<beans:bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<beans:property name="url"
value="jdbc:mysql://localhost:3306/yossi2"/>
<beans:property name="username" value="root" />
<beans:property name="password" value="yossi" />
</beans:bean>
<!-- Hibernate 4 SessionFactory Bean definition -->
<beans:bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="annotatedClasses">
<beans:list>
<beans:value>models.entities.CardInUse</beans:value>
<beans:value>models.entities.Cards</beans:value>
<beans:value>models.entities.Customer</beans:value>
<beans:value>models.entities.Purchases</beans:value>
<beans:value>models.entities.Subscription</beans:value>
<beans:value>models.entities.UserCredentials</beans:value>
<beans:value>models.entities.Vendor</beans:value>
</beans:list>
</beans:property>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
</beans:prop>
<beans:prop key="hibernate.show_sql">true</beans:prop>
<beans:prop key="hibernate.format_sql">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<beans:bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>
<beans:bean id="applicationContextProvder" class="com.controllers.ApplicationContextProvider"/>
@RequestMapping(value = "/db")
public String dbTester(){
UserCredentialsRepository userCredentialsRepository = applicationContext.getBean(UserCredentialsRepository.class);
UserCredentials user = new UserCredentials();
user.setUsername("yossisilb");
user.setPassword("hello");
user.setGroup("admin");
user.setVendor(null);
userCredentialsRepository.saveUserCreds(user);
return "vendorLanding";
}
我的知识库:
@Repository
public class UserCredentialsRepository implements repositories.UserCredentialsRepository {
@Autowired
public SessionFactory sessionFactory;
@Transactional
public void saveUserCreds(UserCredentials creds) {
sessionFactory.getCurrentSession().save(creds);
}