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

Spring学习笔记

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

Spring学习笔记

Spring学习笔记

文章目录
  • Spring学习笔记
  • 前言
    • 1.Spring是什么
      • 1.1简介:
      • 1.2优点
      • 1.3组成
      • 1.4拓展
    • 2.IOC理论推导
    • 3.helloSpring
    • 4.IOC创建对象的方式
    • 5.Spring配置
      • 5.1 别名
      • 5.2 bean配置
      • 5.3 import
    • 6.依赖注入
      • 6.1 构造器注入
      • 6.2 set方式注入(重点)
      • 6.3 拓展方式注入
      • 6.4 bean的作用域


前言

本内容为本人在哔站学习由notepad++实时记录,没有经过idea编译,直接又贴入本博客以防止丢失,如有错误之处,还望指正,谢谢大家

1.Spring是什么 1.1简介:
  • spring:春天------> 给软件行业带来了春天
  • 2002年:首次推出Spring框架的雏形,interface21框架
  • Spring宽假即以interface21为基础,经过重新设计,并不断丰富其内涵,2004年发布1.0正式版本。
  • Spring理念:是现有技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架。
  • Rod Johnson
  • SSH :Struct2 Spring Hibernate
  • SSM :SpringMVC Spring Mybatis
1.2优点
  • Spring是一个免费的开源的框架(容器)
  • Spring是一个轻量级的 非入侵式的框架
  • 控制反转IOC 面向切面编程AOP
  • 支持事务的处理,对整合的支持
    == 总结:Spring就是一个轻量级的控制反转IOC 和面向切面AOP的框架
1.3组成

1.4拓展

在Spring的官网有这个介绍:现代化的Java开发,就是基于Sping的开发

  • Spring Boot
    • 一个快速开发的脚手架
    • 计划于SpringBoot可以快速开发单个微服务
    • 约定大于配置
  • Spring Cloud
    • SpingCloud是基于SpringBoot实现的
      因为现在大多数公司在使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring及SpringMVC 承上启下的作用。

弊端:发展了太久之后,违背了原来的设计理念,配置十分繁琐,配置地狱。

2.IOC理论推导

1.UserDao接口
2.UserDaoImpl实现类
3.UserService业务接口
4.UserService业务实现类

导依赖包 spring-webmvc

public interface UserDao{
	void getUser();
}

public class UserDaoImpl implements UserDao{
	public void  void getUser(){
		System.out.println("默认获取用户的数据");
	}
}
public interface UserService{
	void getUser();
}

public class UserServiceImpl implements UserService{
	//private UserDao userDao = new UesrDaoImpl();   本来是写死的,如果用户需求变了 ,此业务层的UserDaoImpl()也需要修改,为相应的业务实现方法,但是用了下面的set注入之后,就不需要在业层修改代码了,直接在Test类的用户userService调用那传入UserDaoImpl()业务,这个UserDaoImpl()业务相当于参数传给set,然后给了ServiceImpl层中的private UserDao userDao了,而不是一开始直接在此处new,UserDaoImpl() 变了,ServiceImpl层就得变,用set就不需要了,相当于Service代码不需要修改了
- 本质就是把要在因为需求而导致修改ServiceImpl代码工作转移到去Test中具体实现时传入相应的业务就行,不需要修改Service了。
	private UserDao userDao;
	//利用set进行动态实现值的注入
	public void setUserDao(UserDao userDao){
		this.userDao = userDao;
	}
	public void getUser(){
		userDao.getUser();
	}
}


public class MyTest{
	public static void main(String[] args){
		//用户实际调用的是业务层,dao层他们不需要接触
		//UserService userService = new UserServiceImpl();
		userService.setUserDao(new UserDaoXXXServerImpl());
		userService.getUser();
	}
	
}

在之前的业务中,用户的需求可能会影响原来的代码,我们需要根据需求去修改原代码,如果程序的代码量十分大,修改的一次的成本代价非常昂贵。
我们通过使用Set接口去实现,发生了革命性的变化。

private UserDao userDao;
	//利用set进行动态实现值的注入
	public void setUserDao(UserDao userDao){
		this.userDao = userDao;
	}

之前,程序是主动创建对象,控制权在程序员手上
使用了 set注入后,程序不再具有主动性,而是变成了被动的接受对象。

这种思想,从本质上解决了问题,我们程序员就不用再去管理对象的创建了。系统的耦合性大大降低,可以专注在业务的实现上,这是IOC的原型。

3.helloSpring

package com.kuang.pojo;

public class User {
    private String name;
//    public  User() {
//        System.out.println("User的无参构造");
//    }
    public User(String name){
        this.name= name;
        System.out.println("User的有参构造");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public void show(){
        System.out.println("name="+name);
    }
}
4.IOC创建对象的方式

1.使用无参构造方式创建
2.假设我们要是由有参构造方式创建。

package com.kuang.pojo;

public class UserTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = (User) context.getBean("user");
        System.out.println(user);
        user.show();
    }
}

beans.xml文件中的配置

1.默认调用无参

      
    

2.有参调用方式一:通过下标赋值


       

3.有参调用方式二:通过类型,不建议使用


    

4。有参调用方式二:通过参数名创建


	

总结,在配置文件加载的时候,容器中管理的对象就已经初始化了。

5.Spring配置 5.1 别名

如果添加了别名,我们即可通过使用别名获取到这个对象。

//配置文件中 

        


//测试类中
User user = (User) context.getBean("user");
User userAlias = (User) context.getBean("userAlias");
5.2 bean配置

id:bean的唯一标识符,也就是相当于我们学的对象名
class:bean对象对应的全限定名 包名+类型
name:也是别名,而且name可以取多个别名


        


User u2 = (User) context.getBean("u2");
User user3 = (User) context.getBean("user3");
5.3 import

import,一般用于团队开发使用,它可以将多个配置文件,导入合并为一个

假设,现在项目中有多个人开发,这三个人负责不同类的开发,不同的类型需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的

  • 张三
  • 李四
  • 王五
  • applicationContext.xml



使用的时候,直接使用总的配置就可以了

6.依赖注入 6.1 构造器注入

前面已经学过

6.2 set方式注入(重点)
  • 依赖注入:Set注入

    • 依赖:bean对象的创建依赖于容器
    • 注入:bean对象中的所有属性,由容器来注入

    【环境搭建】

    1.复杂类型

public class Address {
    private String address;

    public String getAddress() {
        return address;
    }

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

2.真实测试对象

public class Student {

    private String name;
    private Address address;
    private String[] books;
    private List hobbys;
    private Map card;
    private Set games;
    private String wife;
    private Properties into;
}

3.beans.xml



    

        
     

4.测试类

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.getName());
    }
}

5.完善注册信息

    

    

        

        

        
            
                红楼梦
                西游记
                三国演义
                水浒传
            
        

        
            
                听歌
                敲代码
                看电影
            
        

        
            
                
                
            
        

        
            
                LOL
                COC
                HPH
            
        

        
            
        

        
            
                2050511111
                
                法外狂徒
            
        
        
    
6.3 拓展方式注入

官方文档

使用




    

    


测试

@Test
    public void test2(){
        ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");
        User user = (User) context.getBean("user2");
        System.out.println(user.toString());
    }

注意点: p命名和c命名空间不能直接使用,需要导入xml约束

       xmlns:p="http://www.springframework.org/schema/p"

       xmlns:c="http://www.springframework.org/schema/c"
6.4 bean的作用域


1.单例模式(Spring默认机制)

2.原型模式:每次从容器中get的时候,都会产生一个新对象

3.其余的request,session,application这些之只能在web开发中使用到。

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

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

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