本人这两天在使用三大框架的搭建上遇到各种出错。到现在还有点迷糊,所以讨教高手帮看下~~
例如:注解与xml方式注入的两种区别的环境搭建,时常也会出现sessionFactory & HibernateTemplate is required 的错误。
事务管理器也有多中方式:
<!– 配置一个事务管理器 –>
<bean id=”transactionManager” class=”org.springframework.orm.hibernate4.HibernateTransactionManager”>
<property name=”sessionFactory” ref=”sessionFactory”/>
</bean>
<!– 配置事务,使用代理的方式 –>
<bean id=”transactionProxy” class=”org.springframework.transaction.interceptor.TransactionProxyFactoryBean” abstract=”true”>
<property name=”transactionManager” ref=”transactionManager”></property>
<property name=”transactionAttributes”>
<props>
<prop key=”add*”>PROPAGATION_REQUIRED,-Exception</prop>
<prop key=”modify*”>PROPAGATION_REQUIRED,-myException</prop>
<prop key=”del*”>PROPAGATION_REQUIRED</prop>
<prop key=”*”>PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!– 定义事务管理 –>
<bean id=”transactionManager”
class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>
<property name=”sessionFactory” ref=”sessionFactory” />
</bean>
<!– 定义事务管理拦截器 –>
<bean id=”transactionInterceptor”
class=”org.springframework.transaction.interceptor.TransactionInterceptor”>
<property name=”transactionManager” ref=”transactionManager” />
<property name=”transactionAttributes”>
<props>
<prop key=”get*”>PROPAGATION_REQUIRED,readOnly</prop>
<prop key=”*”>PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!– 定义代理自动管理事务 –>
<bean id=”ProxyCreator” class=”org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator”>
<!– 指定需要Spring管理事务的Bean –>
<property name=”beanNames”>
<list>
<value>adminService</value>
<value>voteService</value>
<value>voteContextService</value>
<value>voterService</value>
</list>
</property>
<!– 调用事务管理拦截器 –>
<property name=”interceptorNames”>
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
怎么样才能正确理清这几种情况
特别是注解与xml方式配置的区别!
遇到的错误:Error creating bean with name “userController”: Injection of autowired dependencies failed;
解决方案
2
看下本人转载的博客吧,里面有详细的spring事务的配置
5
木有什么区别,是实现问题的两种方式而已
2
用xml方式映射,xml文件太多,对工程而言,有点臃肿,建议用注解映射,轻巧方便,改起来也容易,我们现在做项目都用注解。
2
sessionFactory没注入进去,dao层没继承hibernate的话,你在sessionfactory上加个注解试试
1
建议你一步步来,先把sping mvc(个人认为他就是相似struts2,一个入口的配置) ,环境搭起来,再加入sping (他可以说是与数据打交道的,本人是这个觉得的),然后再加入Hibernate或mybatis
2
sessionFactory.getCurrentSession().save(user);
boolean flag = sessionFactory.getCurrentSession().save(user) != null;
你这里执行了两遍保存是什么鬼,两外看一下你传进去的user有没有值
1
sessionFactory.getCurrentSession().save(user);
boolean flag = sessionFactory.getCurrentSession().save(user) != null;
你这里执行了两遍保存是什么鬼,两外看一下你传进去的user有没有值
执行一遍啊!传值了、一个是判断能否添加成功啊
那你的意思是你的判断没有执行操作喽,没操作怎么可能会给你返回执行状态,哈哈哈哈,另外你要是新增的话是不是要用insert操作
1
恩,看看你hibernate配置的主键策略
2
恩,看看你hibernate配置的主键策略
跟主键策略有关系?本人是用注解的方式
package com.tgb.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.transaction.annotation.Transactional;
@Entity
@Table(name=”T_USER”)
public class User {
@Id
@GeneratedValue(generator=”system-uuid”)
@GenericGenerator(name = “system-uuid”,strategy=”uuid”)
@Column(length=32)
private String id;
@Column(length=32)
private String userName;
@Column(length=32)
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
不清楚你这目前是什么问题,只是在猜测,执行了保存没有报错,猜想看是不是原因是主键的问题它做的是更新的操作。目前本人市想不出什么了,你可以在调试一下看看
2
在你的 application-context里面 把 你的 action写进去 就ok例如:
<bean id=”categoryAction” class=”com.dh.action.CategoryAction” scope=”prototype”>
<!–这里具体 你配的啥本人写–>
<property name=”categoryService” ref=”categoryService”></property>
</bean>