Spring01

122 阅读2分钟

优点

Spring 是轻量级,非入侵式的框架,控制反转(IOC),面向切面编程(AOP),支持事务的处理,对框架的整合。 轻量级级的控制翻转和面向切面编程的框架。

缺点

配置十分繁琐

Spring的7大模块

image.png

Spring 文档

Core Technologies (spring.io)

IOC 控制反转

思想:获得依赖注入的方式反转了,通过控制层动态的调用指定Service方法

使用无参构造创建对象

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

//获取Spring的上下文对象
ApplicationContext context = new 
        ClassPathXmlApplicationContext("beans.xml");

Spring 版本网址:repo.spring.io

Spring Maven地址

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.15</version>
</dependency>

Spring的配置

设置别名:

<alias name="hello" alias="hello2"></alias>

依赖注入

构造器注入

set方式注入 依赖:bean对象的创建依赖于容器

注入:bean对象中的所有属性,由容器注入

Bean的作用域

image.png

单例模式(singleton

原型模式(prototype

每一次从容重get中都会产生一个新对象

request,session,application 这些只能在web开发 中使用到

自动装配

满足bean依赖的一种方式,在上下文中自动寻找并自动给bean装配属性

1、在xml中显示配置

2、在Java中显示配置

3、隐式的自动装配*

autowire="byName" 在上下文中自动对象set方法后面的值对应的beanid

autowire="byType" byType 在上下文中自动对象属性相同的beanid

导入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" >
``` # 开启注解的支持 ``` ```

自动装配 当无法通过@Autowired使用时可以使用@Qualifier(value = "xxx")去配置@Autowired的使用 ,指定一个唯一的bean对象注入

@Autowired
@Qualifier(value = "xxx")
private cat cat;

@Nullable 可以让字段为null

required属性为false 说明这个为null

public @interface Autowired {
    boolean required() default true;
}

@Resource 与 @Autowired 的区别

都是用来自动装配都可以放到属性字段上的

@Autowired通过ByType的方式实现,而且必须要求这个对象存在,@Autowired如果不能唯一自动装配属性 应使用@Nullable

@Resource默认通过ByName的方式实现,如果找不到名字则通过byType事项!如果两个都找不到的情况下就报错

执行顺序不同:@Autowired通过ByType的方式实现 ,@Resource默认通过ByName的方式实现

指定要扫描的包 这个包下的注解生效

<context:component-scan base-package="com.fan.pojo"/>

放到类上被spring管理了

@Component

放到类上被spring管理了

@Component

相当于Spring Bean中的value

@Value

dao层注解 组件

@Repository