初识Spring

Spring

1.介绍

Spring是Java EE编程领域的一个轻量级开源框架

作用:解决企业级编程开发中的复杂性

Spring框架主要由七部分组成,分别是

  • Spring Core
  • Spring AOP
  • Spring ORM
  • Spring DAO
  • Spring Context
  • Spring Web
  • Spring Web MVC

官网:

https://spring.io/projects/spring-framework

官方下载地址:

https://repo.spring.io/ui/native/release/org/springframework/spring

GitHub:

https://github.com/spring-projects/spring-framework

中文文档:

https://docs.spring.io/spring-framework/docs/5.2.0.RELEASE/spring-framework-reference/core.html#spring-core

导入maven地址

spring maven:

https://mvnrepository.com/search?q=spring

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.18</version>
</dependency> 
2.特点
  • Spring是一个开源的免费的框架(容器)
  • Spring是一个轻量级的、非入侵式的框架
  • 控制反转(IOC),面向切面编程(AOP)
  • 声明式事务的支持,对各种框架的整合
  • 方便程序的测试。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
3.组成

Spring组成的七大模块

  • Spring面向切面编程(Spring AOP)

  • 对象实体映射(Spring ORM)

  • DBC和DAO模块(Spring DAO)

  • Web模块(Spring Web)

  • 应用上下文(Spring Context)

  • MVC模块(SpringWebMVC)

  • 核心容器(SpringCore)

在这里插入图片描述

4.拓展

Spring官网上给出这样一条学习路线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2IZfXUj-1651039763833)(D:\SPACE\软件\Typora\typora-user-images\image-20220425181524566.png)]

Spring Boot:

  • 一个快速开发的脚手架
  • 基于Spring Boot可以快速的开发单个的微服务
  • 约定大于配置

Spring Cloud:

  • Spring Cloud是基于Spring Boot实现的
  • Spring Cloud是一系列框架的有序集合

IOC理论推导

Spring IOC本质:即 “ 控制反转 ”,有另外一种说法叫“ 依赖注入” ,但依赖注入(DI)只是它的一种实现,它不是什么技术,而是一种设计思想。

  1. UserDao 接口
  2. UserDaoImpl 实现类
  3. UserService 业务接口
  4. UserServiceImpl 业务实现类

用户的需求有时会影响到我们的代码,需要根据用户的需求去修改源代码、修改业务,这不是我们想要的。当程序量非常大时,修改一次的代价会非常大。因此set接口出现了。

set注入

   private UserDao userDao;

   //利用set进行动态实现值的注入
   public void setUserDao(UserDao userDao){
       this.userDao=userDao;
   }
  • 在之前,程序是主动创建对象,控制权在程序员手上。
  • 使用set注入后,程序不再具有主动性,而是变成了被动的接受对象

用set注入之前与之后的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuNOXQzE-1651039763834)(D:\SPACE\软件\Typora\typora-user-images\image-20220426184245821.png)]

现在要实现不同的操作,只需要在xml配置文件中进行修改,所谓的IOC,一句话概括为:对象由Spring来创建,管理,分配。


HelloSpring

编写实体类:

public class Hello {
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "Hello{" +
                "username='" + username + '\'' +
                '}';
    }
}

编写配置文件:

<!--使用spring来创建对象,在spring这些都称为Bean-->

<bean id="hello" class="com.orange.pojo.Hello">
    <property name="username" value="Spring"/>
</bean>

编写测试类:

public class MyTest {
    public static void main(String[] args) {

        //解析beans.xml文件,获取spring的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        //对象现在全在Spring里了,想要使用拿出来就行
        // 参数为配置文件中bean的id
        Hello hello = (Hello) context.getBean("hello");
        //调用方法
        System.out.println(hello.toString());
    }
}

IOC创建对象的方式

  • 使用无参构造创建对象(默认)

  • 使用有参构造创建对象

    • 下标赋值

      <bean id="hello" class="com.orange.pojo.Hello">
          <constructor-arg index="0" value="果力成"/>
      </bean>
      
    • 通过类型创建(不建议使用)

      <bean id="hello" class="com.orange.pojo.Hello">
          <constructor-arg type="java.lang.String" value="果力成"/>
      </bean>
      
    • 通过参数名设置

      <bean id="hello" class="com.orange.pojo.Hello">
          <constructor-arg name="username" value="果力成"/>
      </bean>
      

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


Spring配置

  • 别名

    <!--添加了别名,也可以使用别名获取到对象-->
    <alias name="hello" alias="userNew"/>
    
  • Bean的配置

    <!--id:bean的唯一标识符
    	name也是别名,而且name可以同时取多个别名
    -->
    <bean id="hello" class="com.orange.pojo.Hello" name="n2,n3">
        <property name="username" value="guolicheng"/>
    </bean>
    
  • import

    一般用于团队开发使用,可以将多个配置文件导入合并为一个。

    多人开发同一个项目,每个人使用了不同的类注册在不同的beans中,利用import可以将所有人的beans.xml合并到总的一个applicationContext.xml中。

    <import resource="beans.xml"/>
    <import resource="beans01xml"/>
    <import resource="beans02.xml"/>
    <import resource="beans03.xml"/>
    

对你有帮助的话点个赞吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果力成°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值