Red de conocimiento informático - Conocimiento informático - ¿Cómo hacer que las clases que no son administradas por resorte tengan la característica de inyección automática por resorte?

¿Cómo hacer que las clases que no son administradas por resorte tengan la característica de inyección automática por resorte?

¿Cómo hacer que las clases que no son gestionadas por resorte tengan la característica de inyección automática por resorte? -AutoWireCapableBeanfactory

Paquete spring.core;

Importar Java.io.

Importar Java .io .inputstreamreader

Importar org . >Importar org.spring framework.beans.factory.annotation.autowired;

Importar org.spring framework.beans.factory.annotation.qualifier;

Importar org.spring framework. .factory.config.autowirecapablebeanfactory;

Importar evento org.spring framework.context.application;

importar org.spring framework.context.applicationeventpublisher;

Importar org. marco de primavera. contexto de aplicación de anotación.

Importar org.spring framework.context.annotation.bean;

Importar org.spring framework.context.annotation.configuration;

/**

*¿Cómo hacer que las clases que no son administradas por resorte tengan la característica de inyección automática por resorte?

*Ejemplo: modo de configuración java

* @authorPh.D.

*

* @Time 2014 65438 + la tarde de 3 de febrero 4:04:44.

*/

Patrón de observador de clase pública conpspringevents {

@conexión automática

@Qualifier("messageEventSource ")

fuente de evento de mensaje privado fuente de evento de mensaje;

Contexto privado AnnotationConfigApplicationContext;

@test

Prueba de anulación pública() arroja Throwable{

context = new AnnotationConfigApplicationContext(observerpatternwithsspringeventsconfigure . class);

//AutowireCapableBeanFactory tiene los siguientes métodos importantes para permitir que las clases que no son administradas por Spring tengan la característica de inyección automática de Spring.

context.getautowirecapablebeanfactory(). autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, true);

Hilo = nuevo hilo (messageEventSource);

thread.start();

thread.join ();

}

@Configuration

Patrón de observador de clase estática pública conpspringeventsconfigure {

@Bean(name="messageEventSource ")

fuente de evento de mensaje público fuente de evento de mensaje(){

Devolver nuevo MessageEventSource();

}

@Bean(name=" messageListener ")

Escucha de mensajes públicos messageListener(){

Devolver escucha de mensajes nuevos();

}

}

La clase estática pública MessageEvent extiende ApplicationEvent{

privada estática final larga serialVersionUID = 4927935382440103532 l;

Cadena privada mensaje = " ";

public MessageEvent( fuente del objeto, mensaje de cadena){

super(fuente);

if (!StringUtils.isBlank(message)) {

this .message = mensaje

}

}

@override

cadena pública toString(){

StringBuilder StringBuilder = new StringBuilder( );

stringbuilder append(" evento de mensaje[mensaje = "). agregar (mensaje).

Append("]");

Devuelve stringbuilder.tostring();

}

}

/**

*Implemente la interfaz ApplicationEventPublisherAware para permitir que Spring inyecte ApplicationEventPublisher.

*Es la fuente de los eventos de distribución de Spring.

* @authordoctoral

*

* 2014 12.4 22:52:18

*/

La clase estática pública MessageEventSource implementa Runnable, ApplicationEventPublisherAware {

Private ApplicationEventPublisher ApplicationEventPublisher;

@Override

public void setApplicationEventPublisher(ApplicationEventPublisher ApplicationEventPublisher){

this . applicationEventPublisher = applicationEventPublisher;

}

@override

public void run(){

lector almacenado en búfer = nuevo almacenado en búfer lector(nuevo InputStreamReader(sistema . in));

prueba {

mientras (verdadero) {

cadena readLine = lector . p>

//Evento de publicación

applicationeventpublisher. evento de publicación (evento de nuevo mensaje (este, Thread.currentThread().getName()+"-"+readLine));

}

} captura (IOException e) {

e .

}

}

.

}

La clase estática pública MessageListener implementa ApplicationListener & ltMessageEvent & gt{

@Override

Anulación pública en evento de aplicación (evento de evento de mensaje){

sistema . println(hilo . hilo actual().getName()+evento

}

}

}