学习Spring Boot前需要了解的Spring基础知识

Spring

核心概念

DI: dependency injection
AOP: aspect oriented programming
container: 负责对象的生命周期,从new到finalize
有两种container:

  1. BeanFactory
  2. ApplicationContext基于BeanFactory
    ApplicationContext主要有FileSystemXmlApplicationContext和ClassPathXmlApplicationContext这两个是从xml配置文件中加载,还有从Java配置中加载的使用AnnotationConfigApplicationContext

bean的生命周期

  1. 实例化
  2. 填充属性
  3. 调用BeanNameAware的setBeanName()方法
  4. 调用BeanFactoryAware的setBeanFactory()方法
  5. 调用ApplicationContextAware的setApplicationContext()方法
  6. 调用BeanPostProcessor的预初始化方法
  7. 调用InitializingBean的afterPropertiesSet()方法
  8. 调用自定义的初始化方法
  9. 调用BeanPostProcessor的初始化后方法
    bean可以使用了

容器关闭

  1. 调用DisposableBean的destroy()方法
  2. 调用自定义的销毁方法

Spring模块

核心容器

最核心部分,包含Beans, Core, Context, Expression, ContextSupport

AOP模块

包含AOP和Aspects

数据访问与集成模块

Web与远程调用

Instrumentation

提供了为JVM添加代理的功能,为Tomcat提供了一个织入代理,能够为Tomcat传递类文件

测试

装配Bean

三种装配方式

  1. 在xml中进行显示配置
  2. 在Java中进行显示配置
  3. 隐式的bean发现机制和自动装配

自动装配

注解的形式
关键的注解:@Autowired, @ComponentScan
Spring从两个角度来实现自动化装配:

  1. 组件扫描(component scanning):自动发现应用上下文创建的bean
  2. 自动装配(autowiring):Spring自动满足bean之间的依赖
package soudsystem;
public interface CompactDisc {
	void play();
}
package soundsystem;
import org.springframework.stereotype.Component;

@Component
public class SgtPeppers implements CompactDisc {
	private String title = "abc";
	private String artist = "the beatles";

	public void play() {
		System.out.println(title + artist);
	}
}
package soundsystem;
import org.springframework.context.annotation.componentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
public class CDPlayerConfig {}

这是用Java配置类来开启组件扫描,还有一种用XML的方式开启组件扫描


<beans xmlns=""

                    

你可能感兴趣的:(java)