Я учусь использовать Spring и, в частности, IOC.Я хотел бы использовать аннотации, чтобы избавиться от определяющих bean-файлов конфигурации, и я подумал, что именно для этого и нужна аннотация @Autowired, но мои бины, похоже, не создаются, когда я его использую, поэтому я не знаюесли я делаю что-то не так или если это просто не так, как это должно работать.
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>org.example.demo.ticket.webapp.rest.SpringConfig</param-value>
</context-param>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
</web-app>
SpringConfig class:
package org.example.demo.ticket.webapp.rest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("org.example.demo.ticket")
public class SpringConfig {
}
Пример ресурса, который я хочу подключить, и класс, в котором я хочу его использовать:
package org.example.demo.ticket.webapp.rest.resource;
import org.springframework.stereotype.Component;
@Component("exe")
public class Example {
private String name;
public Example() {
name = "Whatever";
}
}
package org.example.demo.ticket.webapp.rest.resource.projet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class ProjectResource {
private Example exe;
@Autowired
public void setExe(Example pExe) {
exe = pExe;
}
}
Теперь, когда я создаю экземпляр объекта ProjectResource, я ожидаю, что он будет снабжен созданным exe-файлом,но это не то, что происходит, атрибут exe всегда равен nulll.