栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringIOC配置详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringIOC配置详解

大家好,我是徐庶老师,专注java,想要学习java的同学可以欢迎关注我。

结合视频观看效果更佳哦:2022最新Spring5入门到源码【完整资料+源码】_哔哩哔哩_bilibili

目录

IOC配置详解

1.2. 容器概述

1.2.1. 配置元数据

1.2.2. 容器的实例化

1.2.3. 容器的使用

1.3. bean的概述

1.3.1. 命名bean

1.4. 依赖

1.4.1. 依赖注入

1.4.2. 依赖和配置的细节

1.4.3. 使用 depends-on属性

1.4.4. 懒加载bean

1.4.5. 自动注入

1.5. Bean 的作用域

1.5.1. Singleton(单例)的作用域

1.5.2. Prototype(原型)的作用域 

1.6. 自定义bean的特性

1.6.1. 生命周期回调

1.7. Bean 定义的继承

spring创建第三方bean对象

spring引用外部配置文件

SpEL的使用


IOC配置详解

1.2. 容器概述

ApplicationContext是Spring IoC容器实现的代表,它负责实例化,配置和组装Bean。容器通过读取配置元数据获取有关实例化、配置和组装哪些对象的说明 。配置元数据可以使用XML、Java注解或Java代码来呈现。它允许你处理应用程序的对象与其他对象之间的互相依赖关系。

1.2.1. 配置元数据
  • 使用xml的配置

特点:简单、直观 适合入门

  • 基于注解的配置:

常用注解:@Compont(@serivce @controller @repository) @Autowride

特点:Spring 2.5 支持基于注解的元数据配置. SSM框架开发中的使用

  • 基于Java的配置:

常用注解:@Confiration @Bean @Import

特点:从 Spring 3.0开始, 由Spring JavaConfig项目提供的功能已经成为Spring核心框架的一部分。因此,你可以使用Java配置来代替XML配置定义外部bean .

从spring4.0开始支持springboot1.0 之后 springboot完全采用javaConfig的方式进行开发。

1.2.2. 容器的实例化

对象在Spring容器创建完成的时候就已经创建完成,不是需要用的时候才创建

1.2.3. 容器的使用

ApplicationContext是能够创建bean定义以及处理相互依赖关系的高级工厂接口,使用方法T getBean(String name, Class requiredType)获取容器实例。

// 创建spring上下文 加载所有的

 

// 创建spring上下文  加载所有的bean
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

// 获取bean
PetStoreService service = context.getBean("petStore", PetStoreService.class);

// 使用bean的对象
List userList = service.getUsernameList();

1.3. bean的概述

1.3.1. 命名bean
  • 为外部定义的bean起别名
 

1.3.2. 实例化Bean

  • 使用构造器实例化 默认

缺点:无法干预实例化过程

  • 使用静态工厂方法实例化

 可以在createUserServiceInstance方法中自由控制实例化过程

public static  UserServiceImpl createUserServiceInstance(){
    return new UserServiceImpl();
}
  • 使用实例工厂方法实例化


public class createUserService{

    public UserServiceImpl createUserFactory(){
        return new UserServiceImpl();
    }
}

  • 1.4. 依赖

  • 1.4.1. 依赖注入

  • 基于setter方法的依赖注入

 



    
    
    

  • 基于构造函数的依赖注入

 



    
    
    

1.4.2. 依赖和配置的细节

  • 直接值(基本类型,String等)
  • 对其他bean的引用(装配)
  • 内部bean
  • 集合
  • null和空的字符串值
  • 使用p命名空间简化基于setter属性注入XML配置
  • 使用c命名空间简化基于构造函数的XML


    
    
    
    
        
    
    
    
    
    
        
            唱歌
            跳舞
            
        
    
    
        
             
             
        
    









   
  • 1.4.3. 使用 depends-on属性



  • 1.4.4. 懒加载bean



    
    
    
  • 1.4.5. 自动注入

当一个对象中需要引用另外一个对象的时候,在之前的配置中我们都是通过property标签来进行手动配置的,其实在spring中还提供了一个非常强大的功能就是自动装配,可以按照我们指定的规则进行配置,配置的方式有以下几种:

  • default/no:不自动装配
  • byName:按照名字进行装配,以属性名作为id去容器中查找组件,进行赋值,如果找不到则装配null
  • byType:按照类型进行装配,以属性的类型作为查找依据去容器中找到这个组件,如果有多个类型相同的bean对象,那么会报异常,如果找不到则装配null
  • constructor:按照构造器进行装配,先按照有参构造器参数的类型进行装配,没有就直接装配null;如果按照类型找到了多个,那么就使用参数名作为id继续匹配,找到就装配,找不到就装配null

通过将autowire-candidate 属性设置为false,避免对bean定义进行自动装配,如下一节所述。

通过将其 元素的primary属性设置为 true,将单个bean定义指定为主要候选项。



  • 1.5. Bean 的作用域

  • 1.5.1. Singleton(单例)的作用域

  • 1.5.2. Prototype(原型)的作用域 




    
    
    
  • 1.6. 自定义bean的特性

    • 1.6.1. 生命周期回调

  • 初始化方法回调
  • 销毁方法回调 
  • 在非Web应用中优雅地关闭Spring IoC容器
 
  • 1.6.2. ApplicationContextAware 和 BeanNameAware
  • 1.6.3. 其他的 Aware 接口
  • 1.7. Bean 定义的继承

  • 1.8.容器的扩展点 (结合源码讲解)
    • 1.8.1. 使用BeanPostProcessor自定义Bean
      • 例子: BeanPostProcessor风格的Hello World
      • 例子: RequiredAnnotationBeanPostProcessor
    • 1.8.2. 使用BeanFactoryPostProcessor自定义元数据配置
      • 例子: 类名替换n PropertyPlaceholderConfigurer
      • 例子: PropertyOverrideConfigurer
    • 1.8.3. 使用FactoryBean自定义初始化逻辑 

以上建议在《Spring源码》章节中进行学习

spring创建第三方bean对象

在Spring中,很多对象都是单实例的,在日常的开发中,我们经常需要使用某些外部的单实例对象,例如数据库连接池,下面我们来讲解下如何在spring中创建第三方bean实例。

1、导入数据库连接池的pom文件

 



   com.alibaba
   druid
   1.1.21



   mysql
   mysql-connector-java
   5.1.47

2、编写配置文件

ioc.xml

 



​
   
       
       
       
       
   

3、编写测试文件

​  

public class MyTest {
   public static void main(String[] args) throws SQLException {
       ApplicationContext context = new ClassPathXmlApplicationContext("ioc3.xml");
       DruidDataSource dataSource = context.getBean("dataSource", DruidDataSource.class);
       System.out.println(dataSource);
       System.out.println(dataSource.getConnection());
  }
}

spring引用外部配置文件

在resource中添加dbconfig.properties

 

username=root
password=123456
url=jdbc:mysql://localhost:3306/demo
driverClassName=com.mysql.jdbc.Driver

编写配置文件

 




   
   
       
       
       
       
   

SpEL的使用

SpEL:Spring Expression Language,spring的表达式语言,支持运行时查询操作对象

使用#{...}作为语法规则,所有的大括号中的字符都认为是SpEL.

 


       
       
       
       
       
       
       
       
       
       

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992442.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号