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

Spring基础学习

Java 更新时间:发布时间: 百科书网 趣学号

Spring
    • Spring
      • IoC控制反转
        • bean
      • DI依赖注入
        • property
      • bean
        • 实例化bean的三种方式
          • 构造方法
          • 静态工厂
          • 实例工厂
        • bean生命周期
      • 依赖注入的方式
        • setter 注入
          • 引用类型
          • 简单类型(使用setter的方法)
        • 构造器
          • 引用类型
          • 简单类型
        • 自动装配
          • 按类型(重点)
          • 按名称
        • 集合注入
        • 连接数据库
      • 容器
        • 创建容器
        • 获取bean
        • 容器相关
        • bean相关
        • 依赖注入相关

Spring IoC控制反转 bean

bean标签表示配置bean
id表示给bean起名字
class表示给bean定义类型




Dao层以及Service层的接口和实现类实现如下:

必须先导入spring-context才可以新建spring.xml包

		
            org.springframework
            spring-context
            5.2.10.RELEASE
        

applicationContext.xml中的内容为:






    
    

    

运行程序的模块(App.java)中写入:

package com.test;

import com.test.dao.BookDao;
import com.test.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App02 {
    public static void main(String[] args) {
        //3.获取IoC容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //4.获取bean
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        bookDao.save();

        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
    }
}

DI依赖注入 property

property标签表示配置当前bean的属性
name属性表示配置哪一个具体的属性
ref属性表示参照哪一个bean






    
    

    

        
        
    

BookServiceImpl.java

package com.test.service.impl;

import com.test.dao.BookDao;
import com.test.service.BookService;

public class BookServiceImpl implements BookService {

    private BookDao bookDao;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    @Override
    public void save() {
        System.out.println("BookService....");
        bookDao.save();
    }
}

其他程序保持不变

运行结果如下:

bean 实例化bean的三种方式
  • 构造方法
  • 静态工厂
  • 实例工厂(FactoryBean)

构造方法

例子






    
    

    

        
        
    

bean默认为单例,也就是创建的对象指向同一个地址(scope=“singletion”)

scope=“prototype”(非单例)


bean 的对象是通过调用class中impl类中无参构造函数
需要提供无参的构造方法(或不创建其他构造方法)

静态工厂

使用静态化工厂造对象:

静态工厂:使用静态方法返回一个对象

factory-method=“方法名”

实例工厂

改良:


    

BookDaoFactory.java

package com.test.factory;

import com.test.dao.BookDao;
import com.test.dao.impl.BookDaoImpl;
import org.springframework.beans.factory.FactoryBean;

public class BookDaoFactory implements FactoryBean {
    //设置返回对象,代替了原始实例工厂中创建对象的方法
    @Override
    public BookDao getObject() throws Exception {
        return new BookDaoImpl();
    }

    //设置方法返回类型
    @Override
    public Class getObjectType() {
        return BookDao.class;
    }

    //设置创建对象是否为单例,一般不写
    @Override
    public boolean isSingleton() {
        return false;
    }
}

bean生命周期

依赖注入的方式 setter 注入

必须于java文件中提供setter方法

引用类型

简单类型(使用setter的方法)

此处bookService为构造方法注入,以下bookDao为setter引用类型注入(需要使用name指定指定java文件中的变量名,且使用ref指定引用类型的id),interge,string为简单类型的引用,使用name指定java文件中变量名,使用value对变量进行赋值

    
        
        
        
    
构造器 引用类型

简单类型

参数适配

自动装配

(IoC容器根据bean所依赖的资源再容器中自动查找并注入到bean中的过程称为自动自动装配)
方式:

  • 按类型
  • 按名称
  • 按构造方法
  • 不启用自动装配
按类型(重点)
    

    

id="bookDao"都可以不用写

autowire="byType"自动在bean中寻找与BookServiceImpl类型匹配的写入

按名称
    

    

autowire=“byName” 此id名 bean id="bookDao与BookServiceImpl中的变量名一致

集合注入
    
        
            
                100
                200
                300
            
        

        
            
                java
                javaee
                mysql
            
        

        
            
                java
                javaee
                mysql
            
        

        
            
                
                
                
            
        

        
            
                China
                guangdong
                guangzhou
            
        
    
public class BookDaoImpl implements BookDao {

    private int[] array;

    private List list;

    private Set set;

    private Map map;

    private Properties properties;

    public void setArray(int[] array) {
        this.array = array;
    }

    public void setList(List list) {
        this.list = list;
    }

    public void setSet(Set set) {
        this.set = set;
    }

    public void setMap(Map map) {
        this.map = map;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public void save(){
    	//数组输出需要使用Arrays.toString(array)
        System.out.println("array:" + Arrays.toString(array));

        System.out.println("list:" + list);

        System.out.println("set:" + set);

        System.out.println("set:" + map);

        System.out.println("properties:" + properties);

        System.out.println("BookDao:" + "BookDao....");
    }
}
连接数据库


system-properties-mode="NEVER"不加载环境变量


location="*.properties"加载所有配置文件

容器 创建容器

获取bean

BeanFactory实现的bean具有延迟加载的效果也就是新建对象时不会执行构造器方法

ApplicationContext没有延迟加载,但是可以通过配置lazy-init="true"进行配置延迟加载

容器相关

bean相关

依赖注入相关

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

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号