Spring复习

Spring复习,第1张

Spring复习

文章目录
  • Spring
    • 1、Spring框架的引言
    • 2、Spring框架的核心作用
    • 3、spring第一个程序
    • 4、Spring框架中的核心思想
      • 4.1、IOC

Spring 1、Spring框架的引言

​ spring(春天),生于在2002年,由Rod Johnson创作。Spring框架是一个集众多设计模式于一身的开源的、轻量级的项目管理框架。致力于JAVAEE 轻量级解决方案。相对于原来学过的框架而言,spring框架和之前学习的 struts2 、 mybatis 框架有了本质的区别,不是替换原来的某个框架,而是对其进行整合管理。

​ 轻量级解决方案:提供一个以简单的、统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。

2、Spring框架的核心作用

​ Spring 框架用来 管理 [创建|使用|销毁] 项目中的组件,由于spring 框架可以帮我们生产项目中组件对象,因此也习惯称spring是一
个工厂|容器。

组件:项目中的service,dao,controller,都是项目中的组件

注意:spring框架通常不管理对实体类对象(entry)创建

3、spring第一个程序

1、引入依赖


    org.springframework
    spring-core
    4.3.2.RELEASE


    org.springframework
    spring-beans
    4.3.2.RELEASE


    org.springframework
    spring-web
    4.3.2.RELEASE


    org.springframework
    spring-expression
    4.3.2.RELEASE


    org.springframework
    spring-aop
    4.3.2.RELEASE


    org.springframework
    spring-context
    4.3.2.RELEASE


    org.springframework
    spring-context-support
    4.3.2.RELEASE


    org.springframework
    spring-aspects
    4.3.2.RELEASE


    org.springframework
    spring-jdbc
    4.3.2.RELEASE

2、创建组件

public interface UserDAO{
    void save(String name);
}
public class UserDAOImpl implements UserDAO{
    
    @Override
    public void save(String name){
        System.out.println("姓名:"+name);
    }
}

3、添加配置文件

配置文件名称: 任意名称 (默认 spring.xml)

配置文件位置: 本项目中resources目录下



    
    
    

4、启动工厂测试

public class TestSpring{
    public static void main(String[] args) {
        //启动工厂
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        
        //获取工厂中创建好的对象 参数:获取工厂中指定对应的唯一标识
        UserDAO userDAO = (UserDAO) context.getBean("aa");

        userDAO.save("小黑");
    }
}
4、Spring框架中的核心思想 4.1、IOC

Inversion of Controll 控制反转

将对象的创建由原来(new)的方式转移到配置文件中,交给spring ,通过在配置文件中配置bean标签形式创建对象,由spring创建对象过程




    
    
    

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

    UserDAO userDAO = (UserDAO) context.getBean("aa");
    userDAO.save("小黑");

    CityDAO cityDAO = (CityDAO) context.getBean("aa");
    ciryDAO.delete("1");
}

当bean对象多了之后,ioc的好处变体现出来了

问题来了:我们可以把service对象也通过bean管理,但是在service中需要调用dao层对象,怎么办呢???

**DI(dependcy Injection)**依赖注入

定义: 为组件中成员变量完成赋值过程 这个过程称之为 依赖注入

public interface DeptService{
    void save(String name);
}

public class DeptServiceImpl implements DeptService{
    
    // 需要的组件
    private DeptDAO deptDAO;
    
    public void setDeptDAO(DeptDAO deptDAO){
        this.deptDAO=deptDAO;
    }
     
    @Override
    public void save(String name){
        System.out.println("deptService 姓名:"+name);
        deptDAO.save(name);
    }
}



    
    
    
    
    
    	
        
    

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    DeptService deptService = (DeptService) context.getBean("deptService");
    deptService.save("小黑");
}

**IOC 全部概述:**控制反转 就是通过原来手动通过new关键字创建对象的权力交给spring,由spring工厂创建对象的过程,当然spring不仅要创建对象还要在创建对象的同时通过DI的方式维护组件与组件的调用关系

spring中注入方式

  • set 注入 使用成员变量set方式形式进行赋值
  • 构造注入 使用构造方法形式进行属性的赋值
  • 自动注入 就是通过在配置文件中完成类中属性自动赋值

spring中set方式的注入语法

  • set注入: 使用类中的属性set方法为属性完成赋值的过程
  • set注入相关语法
public interface DeptService{
    void save(String name);
}

public class DeptServiceImpl implements DeptService{
    
    // 需要的组件
    private DeptDAO deptDAO;
    
    private String name;
    private Integer age;
    
    public void setName(String name){
        this.name=name;
    }
    public void setDeptDAO(DeptDAO deptDAO){
        this.deptDAO=deptDAO;
    }
     
    @Override
    public void save(String name){
        System.out.println("deptService 姓名:"+name);
        deptDAO.save(name);
        System.out.println("Name:"+ this.name);
    }
}



    
    
    
        
        
        
        
        
        
       
        
            
                小陈
                
            
        
        
            
                
                
            
        
        
        
            
                看书
                睡觉
                打游戏
            
        
        
            
                
                
                
                
            
        
        
        
            
                com.mysql.jdbc.Driver
                jdbc:mysql://localhost:3306/test
                root
                123456
            
        
    

spring中构造注入

使用类中构造方法为类中成员变量赋值过程, 称之为构造注入




    
    
        
        
        
        
        
        
            
                
                
                
            
        
        
            
                
                
                
            
        
    


缺点:需要有对应的构造方法

spring中自动注入

在spring工厂配置文件中通过制定自动注入方式 开启组件属性的自动赋值

注意:

  1. 底层使用原理也是set方式注入
  2. 自动注入需要在对应组件标签开启才能使用
  3. 只用于引用类型的注入|对应类型|组件类型的注入

自动注入语法

  1. 需要谁将谁声明为成员变量,并提供set方法
  2. 在对应组件标签汇总加入autowired 属性并制定自动注入方式即可完成注入



    

    
    


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5695160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存