# spring-learing **Repository Path**: 554343346/spring-learing ## Basic Information - **Project Name**: spring-learing - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IoC容器 ## IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做`依赖注入`(Dependency Injection,简称DI),还有一种方式叫`依赖查找`(Dependency Lookup)。 ## Spring IoC容器和bean `ApplicationContext`接口代表Spring IoC容器(简称:容器),负责实例化、配置和组装Bean。容器通过读取`配置元数据`来获取要实例化、配置和组装bean。 在Spring中,构成应用程序并由容器管理的类称为bean。 Ioc容器 将我们的普通类(Java Bean)交给容器管理的步骤如下: ### 配置元数据 1. XML方式 配置元数据以简单直观的XML格式提供 2. 注解方式 Spring2.5引入,最为常用的一种方式。 注解方式的demo 3. JavaConfig Spring3.0引入,通常结合注解方式一起使用,也比较常用。 JavaConfig方式的demo ### 实例化容器 通过`ApplicationContext`的实现类来实例化容器,常用的`ApplicationContext`实现类有`ClassPathXmlApplicationContext`、`AnnotationConfigApplicationContext`。 ```java ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml"); ``` ### 使用容器 当容器被是实例化后,会把我们的bean注册到容器中,之后我们就可以从容器中操作我们需要的bean。 ```java ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml"); context.getBean(); ``` ### bean依赖处理 典型的企业应用程序一般由多个bean构成,并且bean之间存在依赖关系,比如:UserServiceImpl中依赖UserDaoImpl。 如果不使用Spring,我们可以这么写: ```java public class UserServiceImpl(){ private UserDaoImpl userDaoImpl = new UserDaoImpl(); } ``` ```java public class UserDaoImpl(){ } ``` 但是在Spring中,bean已经交给IoC容器管理,IcO容器已经帮我们做了new的操作,所以我们不需要再new,那如何实现依赖呢? Spring中bean的依赖关系可以通过以下方式实现。 #### 构造方法注入依赖 #### setter方法注入依赖