Spring框架最全知识点

1.Spring框架

1.1 IOC调用原理图

Ioc全称Inversion of Control,即“控制反转”,这是一种设计思想。对象创建的权利由Spring框架完成.由容器管理对象的生命周期,需要的时候进行依赖注入(DI)即可.

1.2 Spring创建对象的步骤

1.定义spring的配置文件的地址.

2.Spring容器启动时加载指定的配置文件.

3.当Spring扫描到bean标签时.加载属性id和class

4.根据class的路径反射.实例化对象.

5.Spring在内部维护了一个大型的Map<k,v>集合(容器),bean中的Id充当Map中的key. 实例化的对象充当Map中value.

形式: Map<Id,实例化对象> 到此为止 spring容器启动成功

6.从spring容器中通过Id或者class类型 获取对象.

7.根据对象调用业务方法根据 Spring-IOC 注解开发

1.3 关于注解开发说明

传统Spring框架采用xml配置文件的方式进行维护.但是随着springboot框架的崛起,注解开发渐渐的成为主流.所以将来以注解开发为准.

组成部分:

1. 实体类: Spring容器管理的类(对象)
       编辑实体类
       public class Cat {
       }
2. 配置类: 相当于早期的xml配置文件
       @ComponentScan("com.jt.demo3")
                               //根据指定的包路径扫描注解,扫描当前包及其子孙包
       @Configuration          //标识当前类是配置类 其实就是配置文件
       public class SpringCatConfig {
           /**
            * 方法要求:
            *  1.必须为公有的
            *  2.必须添加返回值,返回值的对象,就是容器管理的对象
            *  3.方法的名称就是bean的Id
            *  4.方法必须使用@Bean注解标识
            */
           @Bean
           public Cat cat(){
               return new Cat();
           }
       }
3. 测试代码: 利用注解的方式启动spring容器
       public class SpringAnno {
           public static void main(String[] args) {
               //利用注解启动spring容器
               ApplicationContext context =
                       new AnnotationConfigApplicationContext
                               (SpringCatConfig.class);
               //根据类型获取对象
               Cat cat = context.getBean(Cat.class);
               cat.hello();
           }
       }

1.4 Spring-多例模式

1.4.1 概念说明

单例模式: 内存中的对象就一份.

多例模式: 内存中的对象有多份.

概念说明: Spring中的对象默认是单例的.

1.4.2 关于注解@Scope

@ComponentScan("com.jt.demo3")
                        //根据指定的包路径扫描注解,扫描当前包及其子孙包
@Configuration          //标识当前类是配置类 其实就是配置文件
public class SpringCatConfig {
    /**
     * 注解管理对象--自定义对象:
     *  1.方法必须为公有的
     *  2.必须添加返回值,返回值的对象,就是容器管理的对象
     *  3.方法的名称就是bean的Id
     *  4.方法必须使用@Bean注解标识,spring才会执行该方法,标识该对象交给Spring容器管理,
     */
    @Bean
    @Scope("prototype") //表示多例对象
    //@Scope("singleton") //表示单例对象
    public Cat cat(){
        return new Cat();
    }
}

1.5 Spring中懒加载策略

关于懒加载说明

默认条件下,Spring容器启动,则会创建对象.(类比:饿汉式),如果开启了懒加载.则用户什么时候使用.则对象什么时候创建(类比:懒汉式).

注解: @Lazy

	@Bean
    @Scope("prototype") //表示多例对象
    //@Lazy                 //开启懒加载
    //@Scope("singleton") //表示单例对象
    public Cat cat(){
        return new Cat();
    }

关于多例模式和懒加载说明:

@Lazy 只能控制单例模式, 多例模式都是懒加载.

1.6 @Value注解

1.6.1 编辑properties文件

# 1.数据结构:  key=value
# 2.无需添加多余的引号
# 3.注意多余的空格
# 4.程序读取properties文件时,默认采用ISO-8859-1编码! 中文必定乱码
name=张三

1.6.2 编辑UserMapper

public interface UserMapper {
    void addUser();
}

1.6.3 编辑UserMapperI实现类

@Repository
//spring根据指定的路径,加载properties配置文件 数据添加到spring容器中
@PropertySource (value="classpath:/addUser.properties",encoding = "UTF-8")
public class UserMapperImpl implements UserMapper{
    /**
     * @Value 注解的作用: 为属性赋值
     *        需求:  从spring容器中动态获取数据
     */
    @Value("${name}")
    //@Value("张三")  //直接写法,扩展性不好
    private String name;

    @Override
    public void addUser() {
        System.out.println("新增用户:" + name);
    }
}

1.6.4 编辑测试类

public class SpringValue {

    public static void main(String[] args) {
        ApplicationContext context =
                new AnnotationConfigApplicationContext(SpringConfig.class);
        //获取的对象 实现类和接口都可以.
        UserMapper userMapper = context.getBean(UserMapper.class);
        userMapper.addUser();
    }
}

1.6.5 关于IOC-DI总结

什么是IOC: 控制反转, 将对象交给Spring容器管理,由容器管理对象的生命周期.
    
什么是DI: 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值