[Java] 纯文本查看 复制代码
类上使用注解:
package com.spring.master.spring;
import org.springframework.stereotype.Component;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:55
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
@Component
public class EventSource {
public EventSource(){
System.out.println("事件源创建");
}
}
package com.spring.master.spring.dependson;
import org.springframework.stereotype.Component;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:56
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
@Component
public class EventListener {
public EventListener(){
System.out.println("监听器创建");
}
}
package com.spring.master.spring.dependson;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:57
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
@Configuration
@ComponentScan(basePackages = "com.spring.master.spring")
public class SpringConfig {
}
启动服务:
事件源创建
监听器创建
备注:
Spring默认扫描包时会根据文件在文件夹的位置先后顺序扫描加载
********************************************************************************************
使用@DependsOn注解:
package com.spring.master.spring;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:55
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
@Component
@DependsOn(value = {"eventListener"})
public class EventSource {
public EventSource(){
System.out.println("事件源创建");
}
}
启动服务:
监听器创建
事件源创建
[Java] 纯文本查看 复制代码
方法上使用注解:
package com.spring.master.spring;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:55
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
//@Component
//@DependsOn(value = {"eventListener"})
public class EventSource {
public EventSource(){
System.out.println("事件源创建");
}
}
package com.spring.master.spring.dependson;
import org.springframework.stereotype.Component;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:56
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
//@Component
public class EventListener {
public EventListener(){
System.out.println("监听器创建");
}
}
package com.spring.master.spring.dependson;
import com.spring.master.spring.EventSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
/**
* @author Huan Lee
* @version 1.0
* @date 2020-09-22 15:57
* @describtion 业精于勤,荒于嬉;行成于思,毁于随。
*/
@Configuration
@ComponentScan(basePackages = "com.spring.master.spring")
public class SpringConfig {
@Bean
@DependsOn(value = {"eventListener"})
public EventSource eventSource(){
return new EventSource();
}
@Bean
public EventListener eventListener(){
return new EventListener();
}
}
启动服务输出:
监听器创建
事件源创建
[Java] 纯文本查看 复制代码
在本例中,就可以把A的初始化逻辑放在一个 BeanFactoryPostProcessor 中。
@Component
public class ABeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
A.initA();
}
}
这种方式把A中的初始化逻辑放到了加载bean之前,很适合加载系统全局配置,但是这种方式中初始化逻辑不能依赖bean的状态。