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

Spring(二)ioc

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

Spring(二)ioc

ioc

一个理论思想。

概念:指导开发人员在容器中,代码之外管理对象,给属性赋值,管理依赖

ioc技术实现使用的是di(依赖注入) 开发人员在项目中,只需要提供对象的名称,对象的查找、赋值都由容器内部自己实现

Spring使用的是di的技术,底层使用的是反射机制

di 依赖注入,表示创建对象,给属性赋值
di的实现语法有两种:
1、在Spring的配置文件中,使用标签和属性完成,叫做基于xml的di实现
2、使用Spring的注解,完成属性赋值,叫做基于注解的di实现

1、基于xml的di实现

实例对象

public class Student {
    private String name;
    private int age;
    private School school;
}
 
 告诉Spring创建对象
        声明bean 告诉Spring要创建某个类的对象
        id:对象的自定义名称,唯一值。 Spring 通过这个值来找到对象
        class:类的全限定名称(不能是接口,Spring是反射机制创建对象,必须使用类)

        Spring就完成 SomeService someservice=new SomeServiceImpl();
        Spring把创建好的对象放入到map中,spring框架中有一个mao存放对象
        Springmap(id的值,对象)
        一个bean标签声明一个对象

一个Student对象:



 
 1、set注入(设置注入):Spring调用类的set方法,在set方法中实现属性赋值
 1)简单类型的set注入
(必须有set方法 没有set方法报错 set方法中必须有赋值语句
Spring只是执行set方法 set方法内部是什么代码 Spring并不关心)
Spring先执行类对象的无参构造方法 创建对象 然后执行set方法
Spring只关心set方法 并不关心是否有相关的字段
Spring可以给任意类赋值 只要他存在set方法



一个property只能给一个属性赋值
......

只能给简单类型赋值,不能用来给引用类型赋值

创建带有引用类型的student对象




 引用类型赋值 先创建引用类型 ref是引用类型的id值;
 
 -->
 2)引用类型的set注入 Spring调用类的set方法


总结:

对象的创建使用

在其中使用标签进行赋值,spring框架调用对象的set方法进行赋值

对于简单类型的数值使用value 对于引用类型的对象使用ref

2、构造注入:Spring调用类的有参数构造方法,在创建对象的同时,在构造方法中给属性赋值
构造注入使用
  标签一个   表示构造方法一个参数
  标签属性:
  name:表示构造方法的形参名
  index:表示构造方法的参数的位置 参数从左到右是0,1,2的顺序
  value:构造方法的形参类型是简单类型的
  ref:构造方法的形参类型是引用类型的

 -->
      
      
     
   -->

使用index赋值
   
      
      
      
  
    省略index 
    
        
        
        
    


使用引用类型的自动注入spring框架根据某种规则可以给引用类型赋值
使用规则ByName ByType
        1、ByName(按名称注入): java类中引用类型的属性名和Spring 容器中(配置文件中)的id名称一样且数据类型是一致的,这样的容器中的bean,spring可以赋值给引用类型
        语法:
       
        简单类型赋值
       
   
        
        
    

    
        
        
    

引用类型的ID值必须和对象属性中的引用类型字段一致

 2、ByType(按类型注入) java类中引用类型的类型和Spring 容器中(配置文件中)的class属性是同源关系
        这样的容器中的bean,spring可以赋值给引用类型
        同源:
        1、Java类中引用类型的数据类型和bean的class值是一样的
        2、Java类中引用类型的数据类型和bean的class值是父子关系的
        3、Java类中引用类型的数据类型和bean的class值接口和实现类关系的
        语法:
       
        简单类型赋值
       

        在Bytype中,在xml配置文件中只能有一个符合条件的引用类型,多余的是错误的
   
        
        

    
    
        
        
    

使用注解创建对象:
注解使用:
通过Spring的注解完成java对象的创建,赋值。代替XML文件
学习的注解:
@Component 创建普通对象
//使用value属性指定对象名称 value可以省略
@Component("myStudent")

//不指定对象名称,由Spring提供默认的名称,类名的首字母小写

public class Student {

@Respotory      创建dao对象,用来访问数据库
@Service           创建Service对象,用来处理业务逻辑,可以有事务功能
@Controller       创建控制器对象,接受请求,显示处理结果 @Value                简单类型的属性赋值
   
    @Value("李献计")
    private String name;
@Autowired      spring框架中引用类型赋值,支持byName和bytype,默认是byType
 

 

@Resource        Jdk中的注解 自动注入给引用类型赋值。支持byName和bytype,默认是byName
//    @Autowired(required = false)
//    @Qualifier("school-1")

    //默认是ByName:先使用ByName自动注入,如果ByName失败,在使用ByType
    //@Resource 只使用byNmae方法,需要增加一个属性 name
    //name的值是id(名称)

步骤:
1、加入Spring依赖
2、在类中加入Spring的注解(多个不同功能的注解)
3、在Spring的配置文件中,加入一个组建扫描器的标签,说明注解在你的项目中的位置
    
    

4、使用注解创造对象,创建容器ApplicationConText

其他: 经常改的用配置文件
不经常改的用注解 配置文件: 代码和赋值完全分开
注解:     效率高

ioc实现解耦合:

ioc能够实现业务对象的解耦合,例如service和dao对象之间的解耦合

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

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

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