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

Spring5框架

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

Spring5框架

一、笔记基本内容

1.Spring 概念
2.IOC容器
(1)IOC底层原理
(2)IOC接口(BeanFactory)
(3)IOC操作Bean管理(基于xml)
(4)IOC操作Bean管理(基于注解)
3.Aop
4.JdbcTemplate
5.事务管理
6.Spring5新特性

二、Spring5框架概述

1、Spring是轻量级的开源的JavaEE框架
2、Spring可以解决企业应用开发的复杂性
3、Spring有两个核心部分:IOC和Aop
(1)IOC:控制反转,把创建对象过程交给Spring进行管理
(2)Aop:面向切面,不修改源代码进行功能增强
4、Spring特点
(1)方便解耦,简化开发
(2)Aop编程支持
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作
(6)降低API开发难度

三、Spring5入门案例

(1)使用Spring最新稳定版本5.2.6

(2)下载地址
https://repo.spring.io/release/org/springframework/spring/



2、打开idea工具,创建普通Java工程


3、导入Spring5相关jar包



4、创建普通类,在这个类创建普通方法

public class User {
    public void add() {
        System.out.println("add......");
    }
}

5、创建Spring配置文件,在配置文件配置创建的对象
(1)Spring配置文件使用xml格式





    

6、进行测试代码编写

package com.atguigu.spring5.testdemo;

import com.atguigu.spring5.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpring5 {
    @Test
    public void testAdd() {
        // 1 加载Spring配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");

        // 2 获取配置创建的对象
        User user = context.getBean("user", User.class);

        System.out.println("user = " + user);
        user.add();
    }
}


IOC(概念和原理)

1、什么是IOC
(1)控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
(2)使用IOC目的:为了耦合度降低
(3)做入门案例就是IOC实现
2、IOC底层原理
(1)xml解析、工厂模式、反射
3、画图讲解IOC底层原理


IOC(BeanFactory接口)
1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2、Spring提供IOC容器实现两种方式:(两个接口)
(1)BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用
*加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
*加载配置文件时候就会把在配置文件对象进行创建
3、ApplicationContext接口有实现类

IOC操作Bean管理(概念)
1、什么是Bean管理
(0)Bean管理指的是两个操作
(1)Spring创建对象
(2)Spirng注入属性

2、Bean管理操作有两种方式
(1)基于xml配置文件方式实现
(2)基于注解方式实现

IOC操作Bean管理(基于xml方式)
1、基于xml方式创建对象

(1)在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
(2)在bean标签有很多属性,介绍常用的属性

  • id属性:唯一标识
  • class属性:类全路径(包类路径)
    (3)创建对象时候,默认也是执行无参数构造方法完成对象创建

2、基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
3、第一种注入方式:使用set方法进行注入
(1)创建类,定义属性和对应的set方法

public class Book {
    private String bname;
    private String bauthor;
    // set 方法注入
    public void setBname(String bname) {
        this.bname = bname;
    }

    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }
}

(2)在spring配置文件配置对象创建,配置属性注入


    

        
        
    

(2)在spring配置文件中进行配置

public class Orders {
    private String oname;
    private String address;

    public Orders(String oname, String address) {
        this.oname = oname;
        this.address = address;
    }
public void ordersTest() {
        System.out.println(oname + "::" + address);
    }
}

        
        

    
@Test
    public void testOrders() {
        // 1 加载Spring配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");

        // 2 获取配置创建的对象
        Orders orders = context.getBean("orders", Orders.class);
        System.out.println("orders = " + orders);
        orders.ordersTest();
    }

5、p名称空间注入(了解)
(1)使用p名称空间注入,可以简化基于xml配置方式第一步添加p名称空间在配置文件中




第二步进行属性注入,在bean标签里面进行操作



    
四、IOC操作Bean管理(xml注入其他类型属性) (一)直面量-null值
package com.atguigu.spring5;


public class Book {
    private String bname;
    private String bauthor;
    private String address;
    // set 方法注入
    public void setBname(String bname) {
        this.bname = bname;
    }

    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void testDemo() {
        System.out.println(bname + "::" + bauthor + "::" + address);
    }


}


        
        

        
            
        
    
@Test
    public void testBook() {
        // 1 加载Spring配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");

        // 2 获取配置创建的对象
        Book book = context.getBean("book", Book.class);
        System.out.println("book = " + book);
        book.testDemo();
    }
(二)直面量-属性值包含特殊符号

    
        
            
                >]]>
            
        
    
(三)注入属性-外部bean

(1)创建两个类service类和dao类
(2)在service调用dao里面的方法
(3)在spring配置文件中进行配置

package com.atguigu.spring5.service;

import com.atguigu.spring5.dao.UserDao;
import com.atguigu.spring5.dao.UserDaoImpl;

public class UserService {

    // 创建UserDao类型属性,生成set方法
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add() {
        System.out.println("service add.....");
        userDao.update();

    }

}


    

        
    
    

    @Test
    public void testAdd() {
        // 1 加载spring配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean2.xml");
        // 2 获取配置创建的对象
        UserService userService = context.getBean("userService", UserService.class);
        userService.add();
    }
(四)注入属性-内部bean

(1)一对多关系:部门和员工
一个部门有多个员工,一个员工属于一个部门部门是一,员工是多
(2)在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示

package com.atguigu.spring5.bean;

// 员工类
public class Emp {
    private String ename;
    private String gender;

    //员工属于某一个部门,使用对象形式表示
    private Dept dept;

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void add() {
        System.out.println(ename +"::" + gender + "::" + dept);
    }
}

package com.atguigu.spring5.bean;

// 部门类
public class Dept {
    private String dname;

    public void setDname(String dname) {
        this.dname = dname;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "dname='" + dname + ''' +
                '}';
    }
}

@Test
    public void testBean2() {
        // 1 加载Spring配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean3.xml");

        // 2 获取配置创建的对象
        Emp emp = context.getBean("emp", Emp.class);
        emp.add();
    }





    

        
        

        
            
                
            
        


(五)注入属性-级联赋值

第一种写法







    
    

    

    
        
    


第二种写法




    
    

    
    


    
        
    

五、IOC操作Bean管理(xml注入集合属性)

1、注入数组类型属性

2、注入List集合类型属性

3、注入Map集合类型属性

(1)创建类,定义数组,list,map,set类型属性,生成对应set方法

package com.atguigu.spring5.collectiontype2;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class Stu {
    //1 数组类型的属性
    private String[] courses;

    //2 list集合类型属性
    private List list;

    //3 map集合类型属性
    private Map maps;


    // 4  set集合类型属性
    private Set sets;

    public void setSets(Set sets) {
        this.sets = sets;
    }

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

    public void setMaps(Map maps) {
        this.maps = maps;
    }

    public void setCourses(String[] courses) {
        this.courses = courses;
    }
}

(2)在Spring配置文件进行配置




    

        
            
                java课程
                数据库课程
            
        

        
            
                张三
                小三
            
        

        
            
                
                
            
        

        
            
                Mysql
                redis
            
        
    

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

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

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