Respinto bean nome ‘propertyConfigurer’: nessun URL percorsi individuati

Sto giocando con la primavera (btw ho usato per sapere in primavera, quando si utilizza la configurazione invece di annotazione).

pom.xml

<properties>
    <spring.version>3.0.5.RELEASE</spring.version>
    <hibernate.version>3.6.10.Final</hibernate.version>
    <junit.version>4.11</junit.version>
    <jdk.version>1.6</jdk.version>
</properties>

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      version="2.5">    

<display-name>Demo Web Application</display-name>

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

mvc-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans     
    http://www.springframework.org/schema/beans/spring-beans-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-3.0.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<context:component-scan base-package="com.company.controller" />
<context:component-scan base-package="com.company.service" />
<context:component-scan base-package="com.company.dao" />
<context:component-scan base-package="com.company.hibernate" />

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    p:location="/WEB-INF/jdbc.properties" />

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
    p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" />

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation">
        <value>/WEB-INF/hibernate.cfg.xml</value>
    </property>
    <property name="configurationClass">
        <value>org.hibernate.cfg.AnnotationConfiguration</value>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${jdbc.dialect}</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/pages/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

</beans>

jdbc.proprietà

jdbc.driverClassName= com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=jdbc:mysql://127.7.195.2:3306/tomcat2
jdbc.username=xxxx
jdbc.password=yyyy

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
    <mapping class="com.company.hibernate.Person" />
</session-factory>

</hibernate-configuration>

PersonServiceImpl.java

@Service
public class PersonServiceImpl implements PersonService {

@Autowired
private PersonDAO personDAO;

public void addPerson(Person person) {
    personDAO.addPerson(person);
}

public List<Person> listPerson() {
    return personDAO.listPerson();
}

public void removePerson(Integer id) {
    personDAO.removePerson(id);
}
}

PersonDAOImpl.java

@Repository
public class PersonDAOImpl implements PersonDAO {
@Autowired
private SessionFactory sessionFactory;

    @Transactional
public void addPerson(Person person) {
    sessionFactory.getCurrentSession().save(person);
}
    @Transactional
public List<Person> listPerson() {
    return sessionFactory.getCurrentSession().createQuery("from Person").list();
}
    @Transactional
public void removePerson(Integer id) {
    Person person = (Person) sessionFactory.getCurrentSession().load(Person.class, id);
    if (null != person) {
        sessionFactory.getCurrentSession().delete(person);
    }
}
}

PersonController.java

@Controller
public class PersonController {

private PersonService personService = new PersonServiceImpl();

@RequestMapping("/list")
public String listContacts(Map<String, Object> map) {

    map.put("person", new Person());
    map.put("personList", personService.listPerson());

    return "person";
}

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addPerson(@ModelAttribute("person")
    Person person, BindingResult result) {

    personService.addPerson(person);

    return "redirect:/list";
}

@RequestMapping("/delete/{contactId}")
public String deleteContact(@PathVariable("personId")
Integer personId) {

    personService.removePerson(personId);

    return "redirect:/list";
}
}

Person.java

@Entity
@Table(name = "PERSON")
public class Person {

@Id
@Column(name="ID")
private int id;

@Column(name="first_name")
private String firstName;

@Column(name="last_name")
private String lastName;

public Person() {
}

public Person(String fname, String lname) {
    this.firstName = fname;
    this.lastName = lname;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String first_name) {
    this.firstName = first_name;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String last_name) {
    this.lastName = last_name;
}
}

Person.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping>
 <class name="Person" table="PERSON">
  <meta attribute="class-description">
     This class contains the person detail. 
  </meta>
  <id name="id" type="int" column="id">
     <generator class="native"/>
  </id>
  <property name="firstName" column="first_name" type="string"/>
  <property name="lastName" column="last_name" type="string"/>
 </class>
</hibernate-mapping>

In qualche modo il Autowired non funziona. Registrazione presso il log di tomcat, non c’è alcun errore. L’unica cosa che sembra sospetto è il “Rifiuto” linee:

Jan 31, 2014 5:52:26 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor': no URL paths identified
Jan 31, 2014 5:52:26 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor': no URL paths identified
...
Jan 31, 2014 5:52:27 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'personServiceImpl': no URL paths identified
Jan 31, 2014 5:52:27 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'personDAOImpl': no URL paths identified
Jan 31, 2014 5:52:27 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'propertyConfigurer': no URL paths identified
Jan 31, 2014 5:52:27 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'dataSource': no URL paths identified
Jan 31, 2014 5:52:27 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'sessionFactory': no URL paths identified
Jan 31, 2014 5:52:27 PM org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping detectHandlers
FINE: Rejected bean name 'transactionManager': no URL paths identified

Ma quando ho accesso http://tomcat2-gyw97.rhcloud.com/myprj/list, il registro sputa fuori NPE:

FINE: Resolving exception from handler [com.company.controller.[email protected]]: java.lang.NullPointerException
Feb 01, 2014 10:57:09 AM org.springframework.web.servlet.FrameworkServlet processRequest
FINE: Could not complete request
java.lang.NullPointerException
        at com.company.service.PersonServiceImpl.listPerson(PersonServiceImpl.java:35)
        at com.company.controller.PersonController.listContacts(PersonController.java:27)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...

Qualsiasi aiuto sarebbe molto apprezzato. Grazie

  • Ciò che è in linea 35 di PersonServiceImpl? Forse un fagiolo non è iniettato. Si potrebbe mostrare il codice?
InformationsquelleAutor user3260768 | 2014-02-01



3 Replies
  1. 3

    Primo problema

    private PersonService personService = new PersonServiceImpl();

    Si crea l’oggetto da te, invece di dover Primavera iniettare per voi. La primavera non può autowire fagioli in oggetti non gestire.

    @Autowired
    private PersonService personService;

    Secondo problema, aggiungere questo

    <mvc:annotation-driven />

    al tuo mvc-dispatcher-servlet.xml, altrimenti Primavera utilizza il valore predefinito DispatcherServlet configurazione che potrebbe non essere ciò che si desidera.

    Inoltre, questo

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    non serve a nulla, al momento, poiché non si dispone di un ContextLoaderListener.


    Per lo scarto linee, li ignorano. Il AbstractDetectingUrlHandlerMapping passa attraverso tutti i vostri fagioli per vedere se potevano essere utilizzati come richiesta dei gestori.

    • Il tuo suggerimento risolto il mio attuale Autowired problema e ora sto correndo in una sospensione problema. Farò ulteriori ricerche su questo. Grazie per il vostro aiuto!!!
    • Ora sto ottenendo questo errore in tomcat quando ho colpito il /la pagina elenco: FINE: Risoluzione di eccezione dal gestore [[email protected]]: org.di sospensione.HibernateException: Nessuna Sessione Hibernate legato a filo, e la configurazione non permette la creazione di non-transazionale qui
  2. 3

    La mia Primavera di Avvio dell’applicazione non funzionava, e ho notato il messaggio di debug Rejected bean name 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor': no URL paths identified. Scopre che questo non era un problema a tutti.. la Primavera è alla ricerca nella sede di fagioli per associazioni URL – e non è una sorpresa, non trova mapping in molti di fagioli.

    Quindi, se la vostra Primavera applicazione web non è la visualizzazione di una pagina web, controllare il controller è annotato, un metodo è appropriato RequestMapping e di classe è stato componente acquisita ok.

  3. 1

    Nel mio caso l’altra soluzione di forza lavoro da quando ho dint autowire un metodo di servizio e aveva mvc annotazione config nella mia servlet config. È visualizzato, si dispone di impostare il livello di registrazione a “debug” e la sua per il debugging. Per nascondere questi registri basta disabilitare il registro di DEBUG per org.springframework classi.

Lascia un commento