一起学Java——Spring基础(1)

一起学Java——Spring基础(1),第1张

一起学Java——Spring基础(1)

目录

前言学习内容

什么是Spring?Spring体系结构传统编码方式的不足尝试使用Spring IOC初始化IOC容器

Bean的管理从IOC容器获取bean 路径表达式依赖注入

利用setter实现对象依赖注入利用构造方法实现对象依赖注入 注入集合对象

注入List注入Set注入Map注入Properties 查看IOC容器内对象bean scope属性bean对象生命周期基于注解配置bean

组件类型注解自动装配注解元数据注解 JavaConfig

对象实例化与依赖注入 Spring与JUnit4整合 总结

前言

从这篇文章开始我们就继续开始学习我们的Java,今天开始我们学习Spring相关知识,内容较多,我们分篇幅讲解记录~

学习内容 什么是Spring?

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring框架的核心是IOC容器和AOP面向切面编程。

Spring体系结构

这里我推荐看一下这篇文章的介绍,图文结合很详细。
Spring体系结构参考

传统编码方式的不足

现在我们设想一个问题:三个孩子喜欢吃三种不同品种的苹果,我们需要对其进行合理分配。

我们使用传统编码方式的实现思路为:

新建苹果的实体类Apple,添加set和get方法以及默认的构造方法和初始化构造方法;

新建孩子的实体类Child,添加set和get方法以及默认的构造方法和初始化构造方法和一个自定义eat方法;

新建主类及main方法,main方法中首先初始化三种苹果个三个孩子,然后调用对用的eat方法;

运行结果;

不足:

代码固定,修改时必须修改源代码。

对象之间是硬关联关系。

尝试使用Spring IOC

同样是上面的问题,这里我们使用Spring解决这个问题。

保持Apple和Chid实体类不变;在pom.xml中引入Spring依赖;

    
        
            org.springframework
            spring-context
            5.2.6.RELEASE
        
    

在resources文件夹下新建applicationContext.xml文件;



    
    
        
        
        
    

    
        
        
        
    

    
        
        
        
    

    
        
        
    

    
        
        
    

    
        
        
    

新建主类和main方法;
测试结果
初始化IOC容器 Bean的管理

配置Bean的三种方式:

基于XML配置Bean基于注解配置Bean基于Java代码配置Bean

实例化Bean的三种方式:

基于构造方法对象实例化(主要)







     
     
     
     



      
      
      
      

基于静态工厂实例化


基于工厂实例方法实例化



从IOC容器获取bean
ApplicationContext context = new ClassPathXmlApplicationContext(configLocations);
Apple apple4 = context.getBean("apple4", Apple.class);
路径表达式

依赖注入

依赖注入是指运行时将容器内对象利用反射赋给其他对象的 *** 作。

利用setter实现对象依赖注入

  
   
   
   
   


    
    
	

利用构造方法实现对象依赖注入


     
     
     
     



     
     

注入集合对象 注入List

   
       
            具体值
            
       
   

注入Set

   
       
            具体值
            
       
   

Tip:List和Set的区别在于List允许数据重复,Set不允许数据重复!

注入Map

   
       
            
            
       
   

注入Properties

   
       
            v1
            v2
       
   

查看IOC容器内对象
//获取容器内所有beanId数组
String[] beanNames = context.getBeanDefinitionNames();
for (String beanName:beanNames){
     System.out.println(beanName);
     System.out.println("类型:" + context.getBean(beanName).getClass().getName());
     System.out.println("内容:" + context.getBean(beanName));
}

bean scope属性

bean scope属性用于决定对象何时被创建与作用范围bean scope配置将影响容器对象的数量bean scope默认值singleton(单例),指全局共享同一个对象实例


bean对象生命周期


基于注解配置bean

前面我们在学习bean的管理的时候我们提到了配置bean的三种方式,现在我们来学习一下基于注解配置bean。

组件类型注解

声明当前类的功能与职责

注解说明@Component组件注解,通用注解,被该注解描述的类将被IOC容器管理并实例化@Controller语义注解 ,说明当前类是MVC应用中的控制器类@Service语义注解,说明当前类是Service业务服务类@Repository语义注解,说明当前类用于业务持久层,通常描述对应的Dao类

使用注解开发的时候我们的xml配置文件如下:



    
    
    
    

自动装配注解

根据属性特征自动注入对象


推荐使用@Resource按名称匹配。

元数据注解

更细化的辅助IOC容器管理对象

JavaConfig

对象实例化与依赖注入

Spring与JUnit4整合

pom.xml引入


   org.springframework
   spring-test
   5.2.6.RELEASE



    junit
    junit
    4.12

在测试类中引入注解
总结

通过本篇文章我们对于Spring有了一个基本的认识,如果你在文中发现有任何错误,欢迎评论区交流~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5722528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存