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

spring学习记录

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

spring学习记录

spring的简化企业级开发的框架:将Bean对象、Dao组件对象、service组件对象进行管理。

优良的特性:

非侵入式、控制反转IOC、依赖注入DI、切面编程AOP、容器、组件化、一站式、

IOC容器在spring实现的方式有两种:

        BeanFactory:是spring内部的使用接口,面向spring的

        ApplicationContext:是BeanFactory的子接口,提供了高级的特性,现在所有的场合使用的都是ApplicationContext,不是底层的BeanFactory。

依赖注入:

传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。

反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。

装配方式:

基于注解的自动装配

        实现方式:注解
 

依赖注入的方式有如下几种

1、通过setter方法进行注入:通过找到类的对应的setter方法,再进行相应的注入。调用的是无参构造器或者是static工厂的方法进行,方法进行实例化Bean后,调用bean的对应的setter的方法,实现setter的注入的方式

//Bean对象
public class Book {
    private Integer id;
    private String title;
    private String author;
    private Double price;
    private Integer sales;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public Integer getSales() {
        return sales;
    }

    public void setSales(Integer sales) {
        this.sales = sales;
    }

    public Book() {
    }
    public Book(Integer id, String title, String author, Double price, Integer sales) {
        System.out.println("全参构造器");
        this.id = id;
        this.title = title;
        this.author = author;
        this.price = price;
        this.sales = sales;
    }
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", title='" + title + ''' +
                ", author='" + author + ''' +
                ", price=" + price +
                ", sales=" + sales +
                '}';
    }
}

//在bean.xml下进行配置相关的信息
    
        
        
        
        
        
    

//进行测试
    ApplicationContext ioc=new ClassPathXmlApplicationContext("beans.xml");
    @Test
    public void testBook(){
        Book book = (Book) ioc.getBean("book");
        System.out.println(book);
    }


2、通过构造器的方式进行注入 

在bean标签中通过constructor-arg标签设置bean的属性值,constructor-arg标签中的属性说明:


    
        
        
        
        
        
    

 3、特殊值处理的方式 字面量的方式

4、引用外部声明的bean进行处理

        当bean的属性是一个其他类型的对象是,可以在property或标签中通过ref属性或ref子标签引用IOC容器中配置好的该类型的bean,ref的属性值指定为引用的bean的id值。

5、集合属性

    :配置数组类型:配置List类型:配置Map类型

6、引入外部的属性文件

                        
        
            
            
            
            
            
            
        
 循环依赖

构造器的方式无法解决,只能够抛出异常的。

多列方式无法解决,也是只能够抛出异常。因为spring容器中不缓存protype作用域的bean,

单例的模式可以解决:

        提前的暴露一个单例工厂的方法,是的其他bean可以引用到该bean提前暴露一个的正在创建的bean

容器初始化过程

         1、resource定位:对BeanDefinition的资源定位的,找到javaBean的xml信息,并将其封装为Resource对象

        2、BeanDefinition的载入,将javabean表示为IOC容器内部的数据结构

        3、向IOC容器注册这些BeanDefinition

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

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

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