Spring
介绍: Spring 框架是一个 Java 平台, 它为开发 Java 应用程序提供全面的基础架构支持. Spring 负责基础架构, 因此您可以专注于应用程序的开发.
Spring 可以让您从 "plain old Java objects"(POJO)中构建应用程序和通过非侵入性的 POJO 实现企业应用服务. 此功能适用于 Java SE 的编程模型, 全部的或部分的适应 Java EE 模型.
IoC(依赖注入)
1, What: 以前创建对象需要自己主动去 new, 比较费劲, IoC 模式提供 IoC service provider, 解决了被注入对象依赖被依赖对象问题, 减低了耦合.
2, 依赖注入方式
a) 构造器注入
b) Setter 注入
c) 接口注入, 接口注入侵入性强, 使用比较少
IoC 两个主要容器
Beanfactory 容器(接口)
- //The root interface for accessing a Spring bean container.
- // 访问 Spring bean 容器的根接口.
- public interface BeanFactory {
- String FACTORY_BEAN_PREFIX = "&";
- // 返回指定 bean 的实例, 该实例可以是共享的或独立的.
- Object getBean(String var1) throws BeansException;
- // 返回指定 bean 的实例, 该实例可以是共享的或独立的.
- <T> T getBean(String var1, Class<T> var2) throws BeansException;
- // 返回指定 bean 的实例, 该实例可以是共享的或独立的.
- <T> T getBean(Class<T> var1) throws BeansException;
- // 返回指定 bean 的实例, 该实例可以是共享的或独立的.
- Object getBean(String var1, Object... var2) throws BeansException;
- // 返回指定 bean 的实例, 该实例可以是共享的或独立的.
- <T> T getBean(Class<T> var1, Object... var2) throws BeansException;
- // 此 bean 工厂是否包含具有给定名称的 bean 定义或外部注册的 singleton 实例?
- boolean containsBean(String var1);
- // 这个 bean 是一个共享的单例吗?
- boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;
- // 这 ben 是原型吗? 也就是说,{@link #getBean}总会返回独立实例吗?
- boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;
- // 检查具有给定名称的 bean 是否与指定的类型匹配.
- boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;
- // 检查具有给定名称的 bean 是否与指定的类型匹配.
- boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;
- // 确定具有给定名称的 bean 的类型. 更具体地说,* 确定 {@link #getBean} 将为给定名称返回的对象类型
- Class<?> getType(String var1) throws NoSuchBeanDefinitionException;
- // 返回给定 bean 名称的别名 (如果有). * 在{@link #getBean} 调用中使用时, 所有这些别名都指向同一个 bean.
- String[] getAliases(String var1);
- }
Applicationcontext 容器(接口)
- public interface ApplicationContext extends EnvironmentCapable,
- ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
- // 返回此应用程序上下文的唯一 ID.
- String getId();
- // 返回此上下文所属的已部署应用程序的名称.
- String getApplicationName();
- // 返回此上下文的友好名称
- String getDisplayName();
- // 首次加载此上下文时返回时间戳.
- long getStartupDate();
- // 返回父上下文, 如果没有父, 则返回{@code null}, 这是上下文层次结构的根.
- ApplicationContext getParent();
- // 为此上下文公开 AutowireCapableBeanFactory 功能.
- AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
- }
由继承关系可以看出 Applicationcontext 容器功能强于 Beanfactory 容器
参考:
http://ifeve.com/overview-getting-started-with-spring/
来源: https://www.cnblogs.com/chenzhuantou/p/10346397.html