Spring详解

📅 发布时间:2026/7/16 10:23:11 👁️ 浏览次数:
Spring详解
Spring超详细讲解一、Spring是什么Spring简单来说就是容器框架。Spring的核心概念Application和BeanApplicationContext应用程序上下文和BeanBean其实就是对象Spring把对象称为Bean。ApplicationContext是容器用来容纳BeanBean是可以被Spring管理的对象。Spring的核心功能对象的发现创建配置管理。-Spring的功能此功能非彼功能这里的功能是指Spring主要干什么。Spring的特点就是IOC控制反转和AOP面向切面编程。二、IOC控制反转IOC反转的是对象的控制权IOC是概念非技术。在之前的程序中我们一般用两种方式创建对象new和newInstance(),这样创建的对象属于强引用对象jvm垃圾回收机制永远不会回收这类对象这时候需要手动移除引用。如果没有移除这个对象将一直存在久而久之会引起内存泄露问题。Spring创建的对象可以避免此问题而且还可以指定对象的生命周期和对象之间的关系。IOC思想把对象的控制权拿了回来实现了松散耦合。1.ApplicationContext应用程序上下文大概知道了IOC是什么意思现在对程序实现IOC。反转对象的控制权Application就是用来存放管理spring注入的Bean的容器。Application大致分为三类xmlApplicationContextAnnotationConfigApplicationContextWebApplicationContext。今天先讲xmlApplicationContextxmlApplicationContext字面意思就是用xml配置应用程序上下文。xmlApplicationContext又分为ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。用ClassPathXmlApplicationContext的比较多演示ClassPathXmlApplicationContext。PS项目使用的是maven第一创建 ClassPathXmlApplicationContext 对象把注入对象的xml文件写入对象里。ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(beans.xml);第二创建xml配置文件实现对象的属性注入。?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd bean idlinghuchong classspringdemo.Student!--class 是实体类地址-- property nameid value1001/!---property 属性表示对象的属性 name表示参数名 value 表示参数值-- property namename value令狐冲/ property namegender value男/ property namestudentClass refclass01/!--ref 引入其他对象 -- /bean bean idyuelingshan classspringdemo.Student scopeprototype!--scope 表示生命周期 一般默认为 siglenton-- constructor-arg value1002/ constructor-arg value岳灵珊/ constructor-arg value女/ constructor-arg refclass01/ /bean bean idclass01 classspringdemo.StudentClass property nameid value01/ property namename value高软一班/ property namedepartment value信息工程系/ /bean bean idrenyingying classspringdemo.Students factory-methodcreateStudent/ /beansscope表示对象的生命周期siglenton是默认的可以不用设置。prototype表示Bean被调用一次就会创建一个对象可以创建多个对象第三创建实体类package springdemo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import springdemo.StudentClass; public class Student { private String id; private String name; private char gender; Autowired private StudentClass studentClass; public Student() { } public Student(String id, String name, char gender, StudentClass studentClass) { this.id id; this.name name; this.gender gender; this.studentClass studentClass; } public String getId() { return id; } public void setId(String id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public char getGender() { return gender; } public void setGender(char gender) { this.gender gender; } public StudentClass getStudentClass() { return studentClass; } public void setStudentClass(StudentClass studentClass) { this.studentClass studentClass; } } package springdemo; import org.springframework.stereotype.Component; public class StudentClass { private String id; private String name; private String department; public String getId() { return id; } public void setId(String id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department department; } }第四实现对象的调用Test public void student() { Student s1 (Student)context.getBean(linghuchong);/*getBean(Bean的id)返回object类型*/ s1.setId(1001); Assert.assertEquals(1001, s1.getId()); Student s2 (Student)context.getBean(yuelingshan); s2.setId(1002); Assert.assertEquals(1002, s2.getId()); } Test public void getBeanByClass() { StudentClass studentClass context.getBean(StudentClass.class);/*getBean(StudentClass.class) 返回的是指定类型*/ Assert.assertNotNull(studentClass); Assert.assertEquals(01, studentClass.getId()); }运行Test方法即可总结以上就是今天要讲的内容本文仅仅简单介绍了使用set方法注入属性的使用set方法是较为常用的方法除了set方法还有构造法和工厂方法注入属性。