在下面的代码中,
package com.ca.spring;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
public class MyEventPublisher implements ApplicationEventPublisherAware{
private ApplicationEventPublisher applicationEventPublisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
public void publish() {
System.out.println("MyEventPublisher.publish() invoked ... ");
applicationEventPublisher.publishEvent(new MyEvent(this));
}
}
package com.ca.spring;
import org.springframework.context.ApplicationEvent;
public class MyEvent extends ApplicationEvent{
private static final long serialVersionUID = 1L;
public MyEvent(Object source) {
super(source);
}
}
package com.ca.spring;
import org.springframework.context.ApplicationListener;
public class MyEventListener implements ApplicationListener<MyEvent>{
@Override
public void onApplicationEvent(MyEvent e) {
System.out.println("MyEventListener.onApplicationEvent() invoked: " +
e.getSource().getClass().getName());
}
}
package com.ca.spring;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringApp {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");
((MyEventPublisher)context.getBean("myEventPublisher")).publish();
context.close();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- Springbeans.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="myEventPublisher" class="com.ca.spring.MyEventPublisher"/>
<bean id="myEventListener" class="com.ca.spring.MyEventListener"/>
</beans>
1)Spring框架向setApplicationEventPublisher()
注入了哪个对象?因为xml
myEventPublisher
bean的依赖项
2)Spring框架如何决定注入该特定对象?