www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

¿por Qué si intenta utilizar el @Autowired Spring'a no trabajan HttpServlet al pasar a la página de la dirección?

solovladys 2018-09-27 13:39:47

¿por Qué si intenta utilizar el @Autowired Spring'a no trabajan HttpServlet al pasar a la página нуобходимому en?

web.xml

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

  <servlet>
        <servlet-name>init</servlet-name>
        <servlet-class>controller.InitialServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>init</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


pom.xml
<properties>
        <spring.version>4.3.13.RELEASE</spring.version>
    </properties>

    <dependencies>
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>


El servlet
public class InitialServlet extends HttpServlet {
    private final  Logger logger = Logger.getLogger(InitialServlet.class);
    private final ControllerFactory controllerFactory = new ControllerFactory();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String uri = req.getRequestURI();
        InternalController controller = controllerFactory.getController(uri);
        try {
            if (controller == null) {
                controller = controllerFactory.getDefaultController();
                controller.execute(req, resp);
            }
            controller.execute(req, resp);

        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e.getMessage());
            try {
                ((ShowErrorController) controllerFactory.getErrorController()).execute(req, resp,e.getMessage());
            } catch (Exception e2) {
                logger.error("An error has occurred" + e2.getMessage());
                e.printStackTrace();
            }
        }
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
            super.init(config);
            SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext());
        }
    }

Total answers: 1

solovladys 2018-09-27 22:10:06

debido a que se utilizó el modelo de "la fábrica" - método de инит распостраняется sólo InitialServlet el servlet. Esto ocurre por el interior de la implementación del método initial(ServletConfiguration) -dentro de la configuración se define qué es un servlet por el nombre y la dirección se extenderá bin инджектинг.

Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.