好莱坞原则
BeanFactory
Spring -> Interface21
BeanFactory
1.0 ~ 2.0 XML 主导
1.2+ ~ 5.2(PRE) 注解
2.0 注解
Bean 对象的本身是否为是不确定的。
获得 Bean 是线程安全
Setter(方法参数)
构造器(参数)
方法注入
// @Autowired 可选
public User user(Money money){
}
<bean id="map" class="java.util.concurrent.ConcurrentHashMap" scope="prototype" />
request -> ServletRequest
Servlet 引擎的线程模型 1 Thread -> 1 ServletRequest
ServletRequest 是线程安全的
HTTP -> Tomcat(NIO) -> Thread -> Request( Bean)
@RestController
public class MyController {
@Autowired
private User user;
@GetMapping("/user/xxx")
public void execute(){
user.getName();
}
}
JSP、JSTL、EL
Page - PageContext
Request - ServletRequest
Session - HttpSession
Application - ServletContext
Type
Name
Constructor
Auto detected
AUTOWIRE_NO
AUTOWIRE_BY_NAME
AUTOWIRE_BY_TYPE
AUTOWIRE_CONSTRUCTOR
AUTOWIRE_AUTODETECT
AbstractAutowireCapableBeanFactory
- invokeAwareMethods
ApplicationContextAwareProcessor
- ApplicationContextAware
- BeanClassLoaderAware
- ...
BeanPostProcessor
-
InstantiationAwareBeanPostProcessor
- SmartInstantiationAwareBeanPostProcessor
-
postProcessBeforeInitialization()
-
postProcessAfterInitialization()
InitializaingBean
- afterPropertiesSet()
DisposableBean
- destroy()
@Autowired 用于依赖注入,Spring 官方不推荐使用,推荐使用构造器注入。不能修饰 static 字段
QQ 3群:982215002