其他分享
首页 > 其他分享> > Spring5简单记录

Spring5简单记录

作者:互联网

Spring

IOC

配置文件中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <!--配置 User 对象创建--> 
    <bean id="user" class="com.yi.spring5.User"></bean> 
</beans>

测试代码中

@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.add(); 
}

什么是IOC

IOC底层原理

IOC接口

IOC思想基于IOC容器完成,IOC容器底层就是对象工厂。
Spring提供IOC容器实现两种方式

IOC操作Bean的管理(注入普通属性)

Bean管理:

  1. Spring创建对象
  2. Spirng注入属性(创建过程中向成员变量赋值)

基于xml方式创建对象

<bean id ="user" class="com.yi.spring5.User"></bean>

id:唯一标识
class:包类路径

DI:依赖注入

  1. set注入:在bean标签中间添加property,需要实体类的set方法
/** 
 * 演示使用 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 set 方法注入属性--> 
<bean id="book" class="com.yi.spring5.Book"> 
    <!--使用 property 完成属性注入 
        name:类里面属性名称 
        value:向属性注入的值 
    --> 
    <property name="bname" value="易筋经"></property> 
    <property name="bauthor" value="达摩老祖"></property> 
</bean>
  1. 带参构造器注入 constructor-arg
<bean id="orders" class="com.atguigu.spring5.Orders"> 
    <constructor-arg name="oname" value="电脑"></constructor-arg> 
    <constructor-arg name="address" value="China"></constructor-arg> 
</bean>
  1. p名称空间注入

IOC操作Bean的管理(注入其他类型属性)

IOC可以注入Null,以外部bean的方式为Servic注入Dao
内部bean方式,为实体类中表示一对多关系的属性注入。比如部门类里注入员工实体类属性。

IOC操作Bean的管理(注入集合属性)

创建实体类,定义数组、list、map、set 类型属性后,生成对应set方法。在Spring配置文件中,bean标签中间,可以使用array,list,map,set方式注入相应集合属性。

IOC 操作 Bean 管理(FactoryBean)

Spring有两种类型的bean,一种是普通bean一种是工厂bean。
普通 bean:在配置文件中定义 bean 类型就是返回类型

工厂 bean:在配置文件定义 bean 类型可以和返回类型不一样

IOC 操作 Bean 管理(bean 作用域)

bean标签中有socpe属性,默认值singleton,第二个值 prototype,多实例对象。

<bean id="orders" class="com.yi.spring5.Orders" scope="prototype"> </bean>

IOC 操作 Bean 管理(bean 生命周期)

  1. 通过构造器创建 bean 实例(无参数构造)
  2. 为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
  3. 调用 bean 的初始化的方法(需要进行配置初始化的方法)
  4. bean 可以使用了(对象获取到了)
  5. 当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
  6. bean 可以使用了(对象获取到了)
  7. 当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)

IOC 操作 Bean 管理(自动装配,autowire)

bean标签中可以配置autowire属性,可以配置根据属性名称注入或根据属性类型注入。

IOC 操作 Bean 管理(基于注解方式)

spring可以基于注解的方式管理bean。
比如

此四个注解可以用来创建bean实例

使用方式:
引入spring-apo依赖,配置文件中开启注解扫描(扫描包上层目录),在类上面添加创建对象注解,最后开启组件扫描的细节配置。

也有一下这四个注解,设置注入方式

  1. @Autowired //根据名称进行注入
  2. @qualifier //根据名称进行注入
  3. @Resource //可以根据类型注入,可以根据名称注入
  4. @Value //注入普通类型属性

Aop(Aspect Oriented Programming)

面向切面编程,可以对程序中业务逻辑进行隔离,在不修改源代码的情况,向猪肝功能里面添加新功能。

AOP底层原理

Aop底层使用动态代理,有两种情况

AOP术语

  1. 连接点
    1. 类中可以被增强的方法,被称为连接点
  2. 切入点
    1. 实际被增强的方法,成为切入点
  3. 通知(增强)
    1. 实际增强的逻辑部分成为通知
    2. 通知有多种类型
      1. 前置通知
      2. 后置通知
      3. 环绕通知
      4. 异常通知
      5. 最终通知
  4. 切面
    1. 把通知应用到切入点的过程

标签:set,属性,记录,Bean,bean,简单,Spring5,IOC,注入
来源: https://www.cnblogs.com/vuds/p/16098711.html