Spring 基础

markdown ### 基础思想 #### IoC 控制反转(Inversion of Control) ```text 紧耦合系统,单个组件错误,容易造成整个系统错误 IoC 强调的是程序中创建Bean的权利反转给第三方 ``` #### DI 依赖注入(Dependency Injection) ```text 某个Bean的完整创建依赖于其他Bean的注入 ``` #### AOP 切面编程 ```text 是横向的对不同事物的抽象,属性和属性,方法与方法,对象与对象都 可以组成一个切面,而用这种思维去设计编程的方式叫做面向切面编程 ``` ### 示例代码 ```text ApplicationContext的主要实现类 ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件 FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件 在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。 ConfigurableApplicationContext 是ApplicationContext的子接口,包含一些扩展方法 refresh()和close()让ApplicationContext具有启动、关闭和刷新上下文的能力。 WebApplicationContext 专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作 ``` ```text Person person = new ClassPathXmlApplicationContext("config.xml").getBean("person",Person.class); System.out.println(person); ``` ```text # 创建config.xml并配置为Facet "hello" "hi" 23 "test" 353 "test two" ``` ### FactoryBean ```text #重写方法 class ShowInformation implements FactoryBean ``` ```text ``` ### Bean #### 生命周期 ```text scope="singleton" 容器初始化时就会创建该Bean scope="prototype" 会在使用时创建 通过构造器或工厂方法创建bean实例 为bean的属性设置值和对其他bean的引用 调用bean的初始化方法 init bean使用 当容器关闭时,调用bean的销毁方法 destory ``` #### 后置处理器 ```text 允许在调用初始化方法前后对bean进行额外的处理 对IOC容器里的所有bean实例逐一处理,而非单一实例 实现 BeanPostProcessor接口,重写相关方法 ``` ### 自动装配 ```text 根据指定的装配规则,不需要明确指定,Spring自动将匹配的属性值注入bean中 autowire="byName" 根据Bean的name自动装配 autowire="byType" 根据Bean的type自动装配 ```

评论