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

Spring-IOC

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

Spring-IOC

Ioc(Inversion of Control)控制反转

传统的对象引用是采用“new 对象”的形式,例如,Book book = new Book,每次引用都需要重新创建,耦合性高。控制反转则是由主动创建转换为外部(IOC容器)自动创建,将对象交给外部容器管理,就自动实现了对象的创建,只需要引用即可。这就是控制反转。

这些被创建或者管理的对象就是统称为Bean。

DI(Dependency Injection)依赖注入

在容器中建立bean与bean之间的关系的整个过程,就是依赖注入:

例如:

public class UserService {

    private UserDao userDao;

    public  void addUserService() {
        userDao.addUserDao();
        System.out.println("UserService add!");
    }
//    属性需要set方法才能注入
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
}

UserService需要注入userDao属性,就需要先定义他们为Bean,才能建立联系。


    

    

        
    
Bean的基础配置

1,name属性,取别名,可以跟id一样被其他bean引用

2,作用范围,scope属性,默认为单例模式(singleton),可以直接复用bean的类型,避免多次创建浪费,对象的创建可以直接用。多例为(prototype)

适合用单例:表现层对象,业务层对象,数据层对象,工具对象

适合用多例:域对象 

例如:

        UserService userService = applicationContext.getBean("userService", UserService.class);
        UserService userService1 = applicationContext.getBean("userService", UserService.class);
        System.out.println(userService);
        System.out.println(userService1);
实例化Bean:(传统 Book book = new Book())

1,构造方法:spring创建Bean的时候,默认调用的是对象的无参构造方法,上述都是这种方法构建的。

2,使用静态工厂实例化Bean。(很少使用)

3,实例工厂初始化Bean,(了解)

4,使用FactoryBean()实例化bean。需要掌握。

bean工厂类,创建

public class BeanFactory implements FactoryBean {
//    设置返回对象的类型
    public BookService getObject() throws Exception {
        return new BookServiceImpl();
    }
//返回对象的字节码对象
    public Class getObjectType() {
        return BookService.class;
    }
//    默认是单例模式
    public boolean isSingleton() {
        return true;
    }
}

配置文件:

默认是单例模式

依赖注入的方式:(就是用方法往类里面传值) 1,普通方法(setter注入)

简单类型:

//创建setter方法

public class UserDao {
    private int age;
    private String name;

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public  void addUserDao() {
        System.out.println("my name is " + name + "," +age+"岁.");
    }
}

配置属性,用value配置简单类型

 
        
        
    

引用类型:(参考上文注入方法)

2,构造器注入

简单类型:

构造方法:

public class UserDao {
    private int age;
    private String name;

    public UserDao(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public void addUserDao(){
        System.out.println(name+age);
    }
}

注入类型:方法有三种









引用类型:

构建构造方法

public class UserDao {
    private BookDao bookDao;

    public UserDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    public void addUserDao(){
        System.out.println("add UserDao!");
    }
    public void addBookDao(){
        bookDao.addBookDao();
    }
}

依赖注入:

  

        
    

应用:

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

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

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