初识——Spring

什么是Spring

简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架

spring优点

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

总结一句话:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOPl的框架

Spring 框架结构

在这里插入图片描述

IOC本质

控制反转loC(Inversion of Control),是一种设计思想,Dl(依赖注入)是实现loC的一种方法,也有人认为DI只是loC的另一种说法。没有loC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配苦的目的。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是loC容器,其实现方法是依赖注入(Dependency Injection,Dl).

总结:

1、低侵入式设计,代码污染极低
2、独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
3、Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦
4、Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用
5、Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
6、Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

代码实例:
1.编写一个Hello实体类

public class Hello {
    private String str;
    public String getStr() {
        return str;
    }
    //依赖注入:就是用set方法来进行注入
    public void setStr(String str) {
        this.str = str;
    }
    @Override
    public String  toString() {
        return "Hello{" +
                "str='" + str + '\'' +
                '}';
    }
}

2.编写我们的Spring文件,这里我命名为beans.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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--使用spring来创建对象 再Spring中都称为对象-->
    <!-- id=变量名
         class=new 的对象
         property  相当于给对象中的属性设置一个值!
         -->
    <!--
    ref标签:用来引用另一个bean:
    <ref bean="viewResolver"/>,在spring容器中群钊id为viewResolver的bean对象
-->
    <bean id="hello" class="cn.yyj.pogo.Hello">
        <property name="str" value="这是我的值"></property>
    </bean>

</beans>

3.进行测试

import cn.yyj.entity.EmpInfo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        test1();
    }

    private static void test1() {
        ApplicationContext ps=new ClassPathXmlApplicationContext("sunmer.xml");
        EmpInfo es= (EmpInfo) ps.getBean("empInfo");
        System.out.println(es.getAddress().getHomeAddress());
        System.out.println(es.getAddress().getSchoolAddress());
        System.out.println(es.getPname());
    }
}

结果
输出Spring中的value值
在这里插入图片描述

思考如下问题并体会控制反转

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值