Spring框架
Spring框架
两大核心机制(ioc(控制反转)/DI(依赖注入),和AOP(面向切面编程))
Spring 是一个企业级开发框架,是软件设计层面的框架,优势在于可以将应用程序进行分层,提供各个层面的解决方案。开发者可以自由选择组件,相当于底层的一个容器。
MVC层:Struts2,Spring MVC
ORMapping层:hibernate,mybatis ,spring data.
什么是控制反转?
在传统开发中,需要调用对象时,我们通常要先new 一个对象实例i,即这个对象是我们主动new出来的
优势:
如何使用ioc?
-
创建maven工程,在pom.xml里面添加依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.11.RELEASE</version> </dependency>
package com.soutchwind.entitiy;
import lombok.Data;
//导入lombok包,用@Data属性可以免除实体类的getset方法。
-
传统的开发方式,手动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格式的,文件名可以自定义。
从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>