Spring框架

Spring框架

  • 两大核心机制(ioc(控制反转)/DI(依赖注入),和AOP(面向切面编程))

  • Spring 是一个企业级开发框架,是软件设计层面的框架,优势在于可以将应用程序进行分层,提供各个层面的解决方案。开发者可以自由选择组件,相当于底层的一个容器。

MVC层:Struts2,Spring MVC

ORMapping层:hibernate,mybatis ,spring data.

什么是控制反转?

在传统开发中,需要调用对象时,我们通常要先new 一个对象实例i,即这个对象是我们主动new出来的

但是在Spring框架中,创建对象的工作由ioc容器完成,再推送给调用者。实现了创建对象方式反转。

优势:

如何使用ioc?
  • 创建maven工程,在pom.xml里面添加依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.11.RELEASE</version>
</dependency>
  • 创建实体类Student

package com.soutchwind.entitiy;

import lombok.Data;

//导入lombok包,用@Data属性可以免除实体类的getset方法。
@Data
public class Student {
   private long id;
   private String name;
   private  int age;
}
  • 传统的开发方式,手动new Student

     

public class test {
   public static void main(String[] args) {
       Student student = new Student();
       student.setId(23131);
       student.setName("张三");
       student.setAge(24);
       System.out.println(student);
  }
}
  • 通过ioc创建对象,在配置文件中添加需要管理的对象,配置文件放在resource包中,是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">
       <bean id ="student" class="com.soutchwind.entitiy.Student">
           <property name="id" value="1"></property>
           <property name="name" value="张三"></property>
           <property name="age" value="24"></property>
       </bean>
</beans>

从ioc中获取对象.

//加载ioc配置文件
//创建一个ioc对象.applicationContext
//通过ioc对象从配置文件中拿到一个bean标签里面创建好的对象。
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("spring.xml");
Student student = (Student)  applicationContext.getBean("student");
//"student"对应的是spring.xml中bean标签中的id.
//复制操作仍在bean标签中,通过property标签赋值。
System.out.println(student);
配置文件
  • 通过spring.xml配置文件里的bean标签来完成创建对象和给对象赋值的管理。

  • bean标签的属性含义:id:创建的对象名。

  • class:对象的模板类(创建对象的类),所有交给ioc容器来管理的类一定要有无参构造。因为Spring底层是通过反射机制来创建对象的,调用的是无参构造。

  • 对象的成员变量通过property标签进行赋值。

    name:成员变量名。

    value:成员变量的值(基本数据类型,String类型都可以直接赋值,如果是其他引用类型,比如你创建其他类的类型,不能通过value赋值.)

ref:将ioC中另外一个bean赋值给当前的成员变量。(di)

 <bean id ="student" class="com.soutchwind.entitiy.Student">
       <property name="id" value="1"></property>
       <property name="name" value="张三"></property>
       <property name="age" value="24"></property>
       <property name="address" ref="adress"></property>
   </bean>
<bean id="adress" class="com.soutchwind.entitiy.Address">
   <property name="id" value="1"></property>
   <property name="name" value="颖昌路"></property>
</bean>
 

posted on 2023-02-07 11:06  张铁蛋666  阅读(36)  评论(0编辑  收藏  举报

导航