내 applicationContext.xml 파일에서 만든 빈입니다.org.springframework.beans.NotWritablePropertyException. setter의 매개 변수 유형이 getter의 반환 유형과 일치합니까?
<bean id="dataSource"
<class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/employeelist" />
<property name="username" value="root" />
<property name="password" value= xxxxxx />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.aspire.model.Employee</value>
</list>
</property>
</bean>
<bean id ="registrationService" class = "com.aspire.service.RegisterServiceImpl">
<property name="registerDAO" ref="registerDAO"></property>
<!-- <property name ="sessionFactory" ref = "sessionFactory"></property> -->
</bean>
<bean id="registerDAO" class ="com.aspire.dao.RegisterDAOImpl">
<property name ="sessionFactory" ref = "sessionFactory"></property>
</bean>
</beans>
구현 클래스 파일과 함께 RegisterService 인터페이스입니다.
public interface RegisterService {
public void checkRegister(String name,String email,Date dob,String address,String office,String serviceLine,String username,String passwd) throws SQLException,IOException, IllegalStateException, SystemException;
}
@Service("registrationService")
public class RegisterServiceImpl implements RegisterService{
@Autowired
private RegisterDAO register;
public RegisterServiceImpl(){
}
public RegisterServiceImpl(RegisterDAO register){
this.register = register;
}
public void checkRegister(String name, String email, Date dob, String address, String office, String serviceLine,
String username, String passwd) throws SQLException, IOException, IllegalStateException, SystemException {
System.out.println("In Service class...Check Register");
register.checkRegister(name, email, dob, address, office, serviceLine, username, passwd);
}
}
그리고이 파일은 RegisterDAOImpl.java 파일입니다.
@Repository("registerDAO")
public class RegisterDAOImpl implements RegisterDAO{
@Resource(name="sessionFactory")
protected SessionFactory sessionFactory;
protected Session session;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public SessionFactory getSessionFactory(){
return sessionFactory;
}
protected Session getSession(){
return sessionFactory.openSession();
}
public void checkRegister(String name, String email, Date dob, String address, String office, String serviceLine,
String username, String passwd) throws SQLException,IOException, IllegalStateException, SystemException
{
System.out.println("In Check Register");
Integer emp_id = null;
try
{
session = getSession();
/*String SQL_QUERY = "INSERT INTO employee(emp_id,name,dob,address,office,sline,username,password,email)"+
"s";
Query query = session.createQuery(SQL_QUERY);
int result = query.executeUpdate();*/
org.hibernate.Transaction tx1=session.beginTransaction();
Employee emp = new Employee(name,dob,address,office,serviceLine,username,passwd,email);
emp.setEmp_id(111);
emp.setAddress("Chennai");
emp.setDob(dob);
emp.setEmail(email);
emp.setEmp_name("emp_name");
emp.setEmp_pwd("emp_pwd");
emp.setOffice_loc("office_loc");
emp.setServiceLine(serviceLine);
emp.setUsername("username");
emp_id = (Integer)session.save(emp);
System.out.println(emp_id);
tx1.commit();
}catch(HibernateException e)
{
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
finally
{
session.close();
}
}
}
빈이 만들어 질 때 나타나는 오류 메시지입니다. 에 의해 발생 : org.springframework.beans.NotWritablePropertyException : bean 클래스 [com.aspire.service.RegisterServiceImpl]의 'registerDAO'속성이 올바르지 않습니다. 'registerDAO'속성에 쓰기가 가능하지 않거나 잘못된 설정 메소드가 있습니다. setter의 매개 변수 유형이 getter의 반환 유형과 일치합니까?
미리 감사드립니다. 문제 해결에 어려움이 있습니다.
예외 메시지는 매우 분명합니다 ... 당신은'setRegisterDAO' 메소드를 가지고 있지 않습니다. 그런데 왜 그렇게 쓰는거야? 거기에 특수 효과가있는 이유는 무엇입니까? –
RegisterDAO는 인터페이스입니다. 그래서 어떻게 setRegisterDAO 메서드를 구현할 수 수동 구성 부분에 정교한 수 있습니다. 나는 mvc annotations에 익숙하지 않고 배우려고 애 쓰고있다. – Adithya
그 클래스의 구현에는 setter가 없다 ... 주석은 MVC와는 아무런 관련이 없다. Spring MVC와 관련이없는 단순한 스프링 주석이다. –