文章目录

  • 6.4、bean的作用域
  • 7、bean的自动装配
  • 7.1、测试
  • 7.2、ByName自动装配
  • 7.3、ByType自动装配
  • 7.4、使用注解实现自动装配
  • 8、使用注解开发
  • 10、代理模式
  • 10.1、静态代理
  • 10.2、加深理解
  • 11、AOP
  • 11.1、什么是AOP
  • 11.2、AOP在Spring中的作用
  • 11.3、使用Spring实现AOP
  • 12、整合Mybatis
  • 12.1、回忆mybatis
  • 12.2、Mybatis-spring
  • 13、声明式事务


6.4、bean的作用域

idea 下载springboot版本 idea如何安装spring框架_java

1、代理模式(Spring默认机制)

idea 下载springboot版本 idea如何安装spring框架_java_02

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

idea 下载springboot版本 idea如何安装spring框架_自动装配_03

3、其余的request、session、application、这些只能在web开发中使用。

7、bean的自动装配

○自动装配是Spring满足bean依赖的一种方式

○Spring会在上下文中自动寻找,并且自动给bean装配属性

在Spring中有三种自动装配的方式1

1、在xml中显示的配置

2、在Java中显式的配置

3、隐式的自动装配bean【重要】

7.1、测试

1、环境搭建

○一个人有两个chongwu

7.2、ByName自动装配

<!--byName:会自动在容器上下文中查找,和自己对象set方法的值对应的beanid-->
<bean id="people" class="com.muzi.pojo.People" autowire="byName"> 
    <property name="name" value="小冉"/>
</bean>

7.3、ByType自动装配

<!--
byName:会自动在容器上下文中查找,和自己对象set方法的值对应的beanid
byType:会自动在容器上下文中查找,和自己对象属性类型对应的bean
-->
<bean id="people" class="com.muzi.pojo.People" autowire="byType"> 
    <property name="name" value="小冉"/>
</bean>

小结:

byname的时候,需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致

bytype的时候,需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性类型一致

7.4、使用注解实现自动装配

要使用注解的支持:

1.导入约束:context约束



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:aop="http://www.springframework.org/schema/aop"       xsi:schemaLocation="http://www.springframework.org/schema/beans       https://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       https://www.springframework.org/schema/context/spring-context.xsd       http://www.springframework.org/schema/aop       https://www.springframework.org/schema/aop/spring-aop.xsd">    
    <!--开启注解支持-->    
    <context:annotation-config/>
</beans>

@Autowired

直接在属性上使用,也可以在set方式上使用

使用Autowired我们可以不用编写Set方法,前提是你这个自动装配的属性在ioc容器中存在,且符合名字byname

@Autowired
private Cat cat;
@Autowired
private Dog dog;
private String name;

如果@Autowired自动装配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候,

我们可以使用@Qualifier(value=“XXX”)去配置@Autowired的使用,指定一个唯一的bean对象注入

idea 下载springboot版本 idea如何安装spring框架_java_04

8、使用注解开发

10、代理模式

为什么要学习代理模式?【SpringAOP和StringMVC】

代理模式的分类:

○静态代理

○动态代理

10.1、静态代理

角色分析:

○抽象角色:一般会使用接口或者抽象类来解决

○真实角色:被代理的角色

○代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作

○客户:访问代理对象的人

代码步骤:

1、接口

//租房
public interface Rent { 
	public void rent();
}

2、真实角色

//房东
public class Host implements Rent {  
    public void rent(){    
        System.out.println("房东要出租房子"); 
    }
}

3、代理角色

public class Proxy implements Rent{   
    private Host host;    
    public Proxy() {   
    }   
    public Proxy(Host host) {   
        this.host = host;  
    }    
    public void rent(){       
        seeHouse();       
        host.rent();     
        hetong();       
        fare();  
    }   
    //看房  
    public void seeHouse(){    
        System.out.println("中介带你看房");   
    }    
    //收中介费  
    public void fare(){     
        System.out.println("收中介费");  
    }   
    //合同  
    public void hetong(){    
        System.out.println("签租领合同"); 
    }
}

4、客户端访问代理角色

public class Client {   
    public static void main(String[] args){   
        Host host = new Host();    
        //代理     
        Proxy proxy = new Proxy(host);  
        proxy.rent();   
    }
}

代理模式的好处:

○可以使真实角色的操作更加纯粹,不用关注一些公共的业务。

○公共业务交给代理角色,实现了业务的分工。

○公共业务发生扩展的时候,方便集中管理。

缺点:

○一个真实角色就会产生一个代理角色,代码量翻倍

10.2、加深理解

idea 下载springboot版本 idea如何安装spring框架_spring_05

10.3、动态代理

○动态代理和静态代理角色一样

○动态代理的代理类是动态生成的,不是直接写好的

○动态代理分为两大类:基于接口的动态代理,基于类的动态代理

○基于接口的动态代理–JDK动态代理

○基于类的动态代理–cglib

○java字节码实现:javasist

需要了解两个类:Proxy,InvocationHandler:调用处理程序

11、AOP

11.1、什么是AOP

11.2、AOP在Spring中的作用

11.3、使用Spring实现AOP

使用AOP,需要导入一个依赖包

<dependencies>   
    <dependency>      
        <groupId>org.aspectj</groupId>       
        <artifactId>aspectjweaver</artifactId>      
        <version>1.9.4</version>   
    </dependency>
</dependencies>

方式一:使用Spring的Api接口

方式二:自定义来实现AOP

方式三:使用注解实现AOP

12、整合Mybatis

步骤:

1、导入相关jar包

○junit

○mybatis

○mysql数据库

○spring相关的

○aop植入

○mybatis-spring

2、编写配置文件

3、测试

12.1、回忆mybatis

12.2、Mybatis-spring

1.编写数据源配置

2.sqlSessionFactory

3.sqlSessionTemplate

4.需要给接口加实现类

5.将自己写的实现类,注入到Spring中

6.测试使用

13、声明式事务

1、回顾事务

○要么都成功,要么都失败

○事务在项目中,十分重要。

事务ACID原则:

○原子性

○一致性

○隔离性

○持久性

2、spring中的事务管理

○声明式事务:AOP

○编程式事务:需要在代码中,进行事务的管理