Spring -Core
Spring是管理bean的容器
-
创建: 底层使用反射技术创建bean的实例
-
设计: 使用工厂模式(BeanFactory)
-
管理: 容器中的每个bean , Spring容器默认按照单例方式管理,可以通过设置 更改为每次获取时创建不同的实例。
ApplicationContext(Spring容器)加载方式
-
ClassPathXmlApplicationContext :在classpath路径下加载xml配置文件,完成Spring容器的加载;或者, 采用注解方式时,需要在xml配置 文件中使用<context:component-scan />完成类扫描。
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
-
AnnotationConfigApplicationContext :基于注解配置的Spring容器加载方式。
ApplicationContext context=new AnnotationConfigApplicationContext("com.chen");
Spring注解
-
声明bean
@Component :组件
@Controller :控制器组件
@Service :业务层组件
@Repository :数据访问层组件
-
声明注入
-
Spring Framework
@Autowired :自动装配(默认按照类型自动装配) ,按照当前声明的接口类型,在容器中查找该接口实现类对象bean ,进行自动注入(装配)。
@Qualifier :按照bean名称自动装配,与@Autowired注解配合使用。按照当前指定的bean名称,在容器中查找该名称对应的bean ,进行自动注入(装配)。
-
Java标准注解
@Resource : javax扩展包提供的注解,完成自动注入 ,默认按照类型自动注入,也可以使用name属’性进行按名称自动注入
-
-
其他
-
对IOC和DI的理解
首先IOC和DI是对同一个概念不同角度的描述,Ioc—Inverse of Control,即“控制反转”;DI—Dependency Injection,即**“依赖注入”**。
IOC控制反转和DI依赖注入更多的是体现一种思想:将项目中的类(组件)交给Spring容器管理,按照组件之间彼此的依赖关系(采用xml配置文件、注解或者JavaConfig) , 完成组件之间的注入,降低组件之间的耦合。也就是创建对象的控制权转移给Spring容器。
依赖注入的三种方式
- 属性注入(setter注入)
- 构造注入(使用有参构造方法注入)
- 接口注入
配置方式
- XML: 优势—配置内容直观清晰,扩展灵活;劣势—配置繁琐
- 注解: 优势—简洁;劣势—扩展不灵活
- JavaConfig:优势—借助IDEA工具确保配置准确;劣势—配置代码比较多,扩展不灵活