[英]Spring WebMVC WebService data store autowired null
我正在使用WebMVC並按類生成Web服務。 Web服務響應很好,但是在存儲數據時會得到空點異常。
Web服務類piDNHeaderDAO1獲取空點異常
public class wm011DNinfo {
@Autowired
private PIDNHeaderDAO piDNHeaderDAO1;
public OUTDNResponse[] processGenerate(INDNHeader[] inDNHeaders, INDNItem[] inDNItems) {
//for data store
PIDNHeader dnHeader = new PIDNHeader();
dnHeader.setVbeln("test1");
dnHeader.setVstel("test2");
System.out.println("@ "+piDNHeaderDAO1);
//System.out.println("@ "+piDNHeaderDAO2);
piDNHeaderDAO1.saveOrUpdate(dnHeader);
//for response
OUTDNResponse[] outDNarray = new OUTDNResponse[1];
OUTDNResponse outDN = new OUTDNResponse();
outDN.setVbeln("OK");
outDN.setZzint_msg("S");
outDNarray[0] = outDN;
return outDNarray;
}
}
PIDNHeaderDAO
package net.viralpatel.spring.dao;
import java.util.List;
import net.viralpatel.spring.model.PIDNHeader;
public interface PIDNHeaderDAO {
public void saveOrUpdate(PIDNHeader dnHeader);
public void delete(String vbeln);
public PIDNHeader get(String vbeln);
public List<PIDNHeader> list();
}
PIDNHeaderDAOImpl
package net.viralpatel.spring.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import net.viralpatel.spring.model.PIDNHeader;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
public class PIDNHeaderDAOImpl implements PIDNHeaderDAO {
private JdbcTemplate jdbcTemplate;
public PIDNHeaderDAOImpl(DataSource dataSource) {
jdbcTemplate = new JdbcTemplate(dataSource);
}
public void saveOrUpdate(PIDNHeader dnHeader) {
// TODO Auto-generated method stub
String sql = "INSERT INTO PIDNHeader " + "(vbeln, vstel) VALUES (?, ?)";
jdbcTemplate.update(sql, dnHeader.getVbeln(), dnHeader.getVstel());
}
public void delete(String vbeln) {
// TODO Auto-generated method stub
String sql = "DELETE FROM PIDNHeader WHERE vbeln=?";
jdbcTemplate.update(sql, vbeln);
}
public PIDNHeader get(String vbeln) {
// TODO Auto-generated method stub
String sql = "SELECT * FROM PIDNHeader WHERE vbeln=" + vbeln;
return jdbcTemplate.query(sql, new ResultSetExtractor<PIDNHeader>() {
public PIDNHeader extractData(ResultSet rs) throws SQLException,
DataAccessException {
if (rs.next()) {
PIDNHeader dnHeader = new PIDNHeader();
dnHeader.setVbeln(rs.getString("vbeln"));
dnHeader.setVstel(rs.getString("vstel"));
return dnHeader;
}
return null;
}
});
}
public List<PIDNHeader> list() {
// TODO Auto-generated method stub
String sql = "SELECT * FROM PIDNHeader";
List<PIDNHeader> listDNHeader = jdbcTemplate.query(sql, new RowMapper<PIDNHeader>() {
public PIDNHeader mapRow(ResultSet rs, int rowNum) throws SQLException {
PIDNHeader dnHeader = new PIDNHeader();
dnHeader.setVbeln(rs.getString("vbeln"));
dnHeader.setVstel(rs.getString("vstel"));
return dnHeader;
}
});
return listDNHeader;
}
}
和AppConfig.java
package net.viralpatel.spring.config;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import net.viralpatel.spring.dao.PIDNHeaderDAO;
import net.viralpatel.spring.dao.PIDNHeaderDAOImpl;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "net.viralpatel.spring")
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
System.out.println("appconfig start");
return viewResolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public DataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
dataSource.setUrl("jdbc:sqlserver://192.168.4.22;DatabaseName=xxxx");
dataSource.setUsername("xxxxx");
dataSource.setPassword("accxxxxxpac");
return dataSource;
}
@Bean
public PIDNHeaderDAO getPIDNHeaderDAO() {
System.out.println("PIDNHeaderDAO start");
return new PIDNHeaderDAOImpl(getDataSource());
}
}
通過Eclipse Web Service資源管理器調用Web Service后,獲得以下消息:
<soapenv:Fault>
<soapenv:Fault>
<faultcode>soapenv:ServeruserException</faultcode>
<faultstring>java.lang.NullPointerException</faultstring>
<detail>
<nsl:hostname xmlns:ns1="http://xml.apache.org/axis/">home.local</nsl:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
wm011DNinfo
類不是Spring bean。 因此,您不能將其他bean注入其中(在您的情況下,通過@Autowired
PIDNHeaderDAO
)。 使用類似@Component
的方法,或手動創建帶有@Bean
批注的方法(就像使用getPIDNHeaderDAO
方法一樣)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.