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容器来管理的类一定要有无参构造。