Spring

初始Spring

  企业级开发应用

  Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。

  框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

  在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。

  我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:

  Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况。

  这些示例还将成为本系列后面部分进行的展开式讨论的基础,在本文的后面部分,将介绍 Spring 框架通过 Spring AOP 实现 AOP 构造的方式。

Spring的两个主要的目标

  一:让现有技术更易于使用

  二:促进良好的编程习惯

Spring全新解决方案

  坚持一个原则:

    不重新发明轮子,Spring绝不做重复性的实现

Spring20个功能模块,6部分

  

 

 

  Spring Core:框架最基础的部分,提供了IoC特性

  Spring Context:为企业级开发提供了便利和集成的工具

  Spring AOP:是基于Spring Core的符合规范的面向切面编程的实现

  Spring JDBC:提供了JDBC的抽象层,简化了JDBC编码

  Spring ORM:对市面上流行的ORM框架提供了支持

  Spring Web:为Spring在Web程序中提供了支持

Spring IOC

  控制反转(Inversion of Control)IoC,也称依赖注入(Dependency Injection)DI

  是面向编程的一种设计理念,用来降低程序代码之间的耦合度

  IOC不是什么技术,而是一种设计思想,DI是具体实现

  Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制

  而具体怎么做就是DI的具体实现了

什么是依赖

  在代码中一般指通过局部变量,方法参数,返回值等建立的对于其他对象的调用关系。

Spring小案例:

  步骤一:

    导入依赖

      

<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
  </dependencies>

  

  步骤二:

    创建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
       http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

  步骤三:

    创建实体类

package com.SpringMckz.entity;

public class Student {
//普通属性
private Integer stuid;
private String stuname;
//域属性
private Teacher teacher;


public Teacher getTeacher() {
return teacher;
}

public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}

public Integer getStuid() {
return stuid;
}

public void setStuid(Integer stuid) {
this.stuid = stuid;
}

public String getStuname() {
return stuname;
}

public void setStuname(String stuname) {
this.stuname = stuname;
}

//普通方法
public void stu(){
System.out.println("stuid:"+stuid+"\tstuname:"+stuname);
}
}

  

package com.SpringMckz.entity;

public class Teacher {
    //普通属性
    private Integer tid;
    private String tname;

    public Integer getTid() {
        return tid;
    }

    public void setTid(Integer tid) {
        this.tid = tid;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }
}

  步骤三:

    在大配置文件中增加bean节点

<?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">
    <!--注入bean
        id相当于当前bean唯一标识
        class是bean 的全路径
        property注入bean中的属性         必须封装
    -->
    <bean id="Student" class="com.SpringMckz.entity.Student">
        <property name="stuid" value="18"></property>
        <property name="stuname" value="梅川酷子"></property>
        <!--关联下一个bean-->
        <property name="teacher" ref="teacher"></property>
    </bean>
  <bean id="teacher" class="com.SpringMckz.entity.Teacher">
  <property name="tid" value="28"></property>
  <property name="tname" value="超哥"></property>
  </bean>
</beans>

  步骤四:

    测试:

  

public class stutest {
    @Test
    public void teststu(){
        ApplicationContext atc=new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = (Student)atc.getBean("Student");
        student.stu();
        System.out.println(student.getTeacher().getTname());
    }
}

 

posted @ 2019-10-24 13:38  梅川酷子灬  阅读(172)  评论(0编辑  收藏  举报