Spring框架学习Day01

Posted 龚喜发财+1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring框架学习Day01相关的知识,希望对你有一定的参考价值。

文章内容为某站遇见狂神说视频学习内容

1.简介

spring框架是为了简化企业级开发

2.优点

  1. 开源的免费的框架(容器)
  2. 轻量级的,非入侵式的框架
  3. 控制反转(IOC) 面向切面编程(AOP)
  4. 支持事务的处理,对框架整合的支持

3.组成

在这里插入图片描述

4拓展

springBoot和springCloud

5.IOC理论

以前例子
UserDao

public interface UserDao {
     void getUser();
}

UserDaoImpl

public class UserDaoImpl implements UserDao{
    public void getUser(){
        System.out.println("huoqushuju");
    }
}

UserService

public interface UserServices {
    public void getUser();
}

UserServiceImpl

public class UserServicesImpl implements UserServices{
    private UserDao userdao=new UserDaoImpl();
 public void getUser(){
        userdao.getUser();
    }

Mytest

public static void main(String[] args){
        //用户实际调用的是业务层,不需要实际接触dao层
        UserServices userservices=new UserServicesImpl();
        userservices.getUser();
    }

如果增加实现类,则需要修改业务层的代码,在真实项目中的代码量庞大,修改一次的代价十分昂贵。
可以使用一个Set接口实现,在UserServiceImpl中,修改代码为

private UserDao userdao;
    //利用set进行动态实现值得注入
    public void setUserdao(UserDao userdao) {
        this.userdao = userdao;
    }
    public void getUser(){
        userdao.getUser();
    }

在Mytest中修改代码为

public static void main(String[] args){
        //用户实际调用的是业务层,不需要实际接触dao层
        UserServices userservices=new UserServicesImpl();
        ((UserServicesImpl) userservices).setUserdao(new mysqlDaoImpl());
        userservices.getUser();
    }

之前,程序是主动创建对象,控制权在程序员手里
使用Set注入后,程序不再具有主动性,而是变成被动的接受对象,程序员不再需要管理对象的创建,系统耦合性降低,可以专注业务的实现,这是IOC的原型!

IOC本质:
没有IOC的程序中,我们使用面向对象编程,对象的创建与对象之间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,而使用控制反转之后,将对象的创建转移给第三方,也就是说获得依赖对象的方式反转了

可以采用两种方式(1)xml文件进行配置(2)采用注解的方式

6.代码示例hellospring

Hello类、

package com.xu.pojo;

public class Hello {
    private String str;
    public String getStr() {
        return str;
    }
    public void setStr(String str) {
        this.str = str;
    }
    @Override
    public String toString() {
        return "Hello{" +
                "str='" + str + '\\'' +
                '}';
    }
}

(1)基于xml配置元数据applicationContext.xml

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--使用Spring来创建对象,在Spring中这些都称为bean
bean=对象   就是new了一个hello()
原来 类型 变量名=new 类型()
    Hello hello=new Hello()
现在  bean中的id就是变量名   class就是new的对象
property就是给对象中的属性设置值
这个过程就是控制反转-->
       <bean id="hello" class="com.xu.pojo.Hello">
           <property name="str" value="String">
           </property></bean>
</beans>

(2)实例化容器
在mytest类中:

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

(3)使用容器

//我们的对象都在Spring容器中管理了,我们要使用,直接从里面去出来就可以啦1
        Hello hello=(Hello) context.getBean("hello");
        System.out.println(hello.toString());

7.总结

是实现不同的操作,只需要在xml配置文件中进行修改,也就是说
IOC:对象由spring创建,管理,装配!

以上是关于Spring框架学习Day01的主要内容,如果未能解决你的问题,请参考以下文章

Day644.Spring框架开发双刃剑 -Java业务开发常见错误

Java学习笔记:Spring框架

Spring_day01

Spring Day01 Spring 框架概述以及Spring中基于XML的IOC配置

Spring框架学习Day03(注解开发)

Spring框架学习Day02(依赖注入)