Java Spring上下文未加载上下文文件
我正在创建一个基于spring的web项目,我的文件如下。Java Spring上下文未加载上下文文件,java,spring,maven,spring-mvc,applicationcontext,Java,Spring,Maven,Spring Mvc,Applicationcontext,我正在创建一个基于spring的web项目,我的文件如下。 applicationContext.xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.sprin
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:annotation-config />
<context:component-scan base-package="<package>" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="packagesToScan">
<list>
<value><package name></value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">update</prop>
</props>
</property>
</bean>
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:<filename>.properties</value>
</property>
</bean>
编辑2
服务类
@Path("/cities")
public class CityServices {
@Autowired
CityDAO cityDAO;
@POST
@Path("/search")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response searchCities(String inputJsonString)
{
if ( inputJsonString != null )
{
JSONObject inputJson = new JSONObject();
try {
inputJson = new JSONObject(inputJsonString);
if ( !inputJson.has("keyword"))
{
return Response.status(Status.BAD_REQUEST).entity("Bad request").build();
}
} catch (Exception e) {
return Response.status(Status.BAD_REQUEST).entity("Bad request").build();
}
String searchQuery = inputJson.getString("keyword");
List<City> cities = cityDAO.searchCities(searchQuery);
return Response.status(Status.OK).entity(cities).build();
}
else {
return Response.status(Status.BAD_REQUEST).entity("Bad request").build();
}
}
}
@Path(“/cities”)
公共级城市服务{
@自动连线
城市道城市道;
@职位
@路径(“/search”)
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公共响应搜索城市(字符串inputJsonString)
{
if(inputJsonString!=null)
{
JSONObject inputJson=新的JSONObject();
试一试{
inputJson=新的JSONObject(inputJsonString);
如果(!inputJson.has(“关键字”))
{
返回Response.status(status.BAD_REQUEST).entity(“BAD REQUEST”).build();
}
}捕获(例外e){
返回Response.status(status.BAD_REQUEST).entity(“BAD REQUEST”).build();
}
String searchQuery=inputJson.getString(“关键字”);
List cities=cityDAO.searchCities(searchQuery);
返回Response.status(status.OK).entity(cities.build();
}
否则{
返回Response.status(status.BAD_REQUEST).entity(“BAD REQUEST”).build();
}
}
}
DAO接口
public interface CityDAO {
public List<City> searchCities(String searchQuery);
}
公共接口城市大道{
公共列表搜索城市(字符串搜索查询);
}
DAO Impl类
@Repository
public class CityDAOImpl implements CityDAO {
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
@Override
@Transactional
public List<City> searchCities(String searchQuery) {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from "+ City.class.getName() + " where "
+ "city_name like '%"+searchQuery+"%' OR city_airline_code like '%"+searchQuery+"%'");
return query.list();
}
}
@存储库
公共类CityDAOImpl实现CityDAO{
@自动连线
私人会话工厂会话工厂;
@抑制警告(“未选中”)
@凌驾
@交易的
公共列表搜索城市(字符串搜索查询){
Session Session=sessionFactory.getCurrentSession();
Query Query=session.createQuery(“from”+City.class.getName()+“where”
+“城市名称如“%”+searchQuery+“%”或城市航空公司代码如“%”+searchQuery+“%”);
返回query.list();
}
}
上下文基包标记-
<context:component-scan base-package="com._._.dao" />
com…dao是CityDAO所在的包。获取空指针异常
在List cities=cityDAO.searchCities(searchQuery)代码>这表示未发生自动连线
编辑3
将@Component注释添加到jersey服务类解决了以下问题:)
感谢@ike3的帮助。无法加载属性。。。无法打开。。。[/.properties]
。似乎您在spring配置的其他地方有propertyplaceholderconfigure和.properties?@ike3是的!就在那里。但为什么上下文加载侦听器尝试读取该文件而不是应用程序上下文文件?是的。你说得对。正如我在context.xml中给出的.properties一样,它正在根目录中检查该文件,但它在WEB-INF/classes/.properties中。那么我应该给出这个路径吗?有没有从类路径加载该文件的选项?尝试将其更改为classpath:/.properties
@ike3谢谢:)。您能检查我现在添加的编辑吗?无法加载属性。。。无法打开。。。[/.properties]
。似乎您在spring配置的其他地方有propertyplaceholderconfigure和.properties?@ike3是的!就在那里。但为什么上下文加载侦听器尝试读取该文件而不是应用程序上下文文件?是的。你说得对。正如我在context.xml中给出的.properties一样,它正在根目录中检查该文件,但它在WEB-INF/classes/.properties中。那么我应该给出这个路径吗?有没有从类路径加载该文件的选项?尝试将其更改为classpath:/.properties
@ike3谢谢:)。你能检查一下我现在添加的编辑吗?
public interface CityDAO {
public List<City> searchCities(String searchQuery);
}
@Repository
public class CityDAOImpl implements CityDAO {
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
@Override
@Transactional
public List<City> searchCities(String searchQuery) {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from "+ City.class.getName() + " where "
+ "city_name like '%"+searchQuery+"%' OR city_airline_code like '%"+searchQuery+"%'");
return query.list();
}
}
<context:component-scan base-package="com._._.dao" />