Spring框架
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
中文名 :Spring框架
创建原因:软件开发的复杂性
使用:JavaBean
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB
范围:任何Java应用
— 引用百度中对spring的介绍
即Spring轻量级框架的两个核心是 控制反转(IoC) 和 面向切面(AOP) 。
- 创建Spring项目:
(1)IDEA上可以直接创建spring项目,之后项目就会自动帮你导入jar包;
(2)建立maven项目,建立依赖,根据依赖自行引用jar包;
(3)手动导入最基本jar:
开发spring至少需要使用的jar(5个+1个):
spring-aop.jar (开发AOP特性时需要的JAR)
spring-beans.jar (处理Bean的jar < bean>)
spring-context.jar (处理spring上下文的jar < context>)
spring-core.jar (spring核心jar)
spring-expression.jar (spring表达式)
三方提供的日志jar
commons-logging.jar (日志)
前五个jar包在下载的压缩包解压之后在lib中;加上日记包jar共6个基础jar包;
- 创建applicationContext.xml文件(IDEA可以直接创建spring Config文件就不用以下的编写了)
<?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>
- 建立一个Student类
public class Student {
private int StuId;
private String name;
private int age;
private int sex;
public Student(){}
public Student(int stuId, String name, int age, int sex) {
StuId = stuId;
this.name = name;
this.age = age;
this.sex = sex;
}
public int getStuId() {
return StuId;
}
public void setStuId(int stuId) {
StuId = stuId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"StuId=" + StuId +
", name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
- 在applicationContext.xml文件的< beans>< /beans>中添加
//class中要写全类名
<bean id="student1" class="org.eaxm.Student">
<property name="stuId" value="2019"></property>
<property name="name" value="s2019"></property>
<property name="age" value="17"></property>
<property name="sex" value="1"></property>
</bean>
- 在测试文件中编写上下文对象加载配置文件
//注意加载文件的路劲要正确,并注意导包问题
//上下文对象加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("org/conf/applicationContext.xml");
//根据bean中的id进行调用
Student student = (Student) context.getBean("student1");
System.out.println(student);
运行结果:
而上面的配置文件实际上就是(控制反转)IOC容器,目的就是减少耦合性,帮助我们完成new对象并赋值的操作。个人认为减少耦合性就是让程序模块化,各个模块注重于不同的功能实现,而在需要使用的时候进行调用。
使用容器接口回调
- 在接口回调的时候,容器的调用也是十分奇妙的
//接口类
public interface ICourse {
void learn();//学习
}
//HtmlCourse.java
public class HtmlCourse implements ICourse {
@Override
public void learn() {
System.out.println("Html课程学习...");
}
}
//javaCourse.java
public class javaCourse implements ICourse {
@Override
public void learn() {
System.out.println("java课程学习...");
}
}
- 在配置文件中加入javaCourse、HtmlCourse
<!--多态,存放接口类-->
<bean id="javaCourse" class="org.instance.javaCourse"></bean>
<bean id="htmlCourse" class="org.instance.HtmlCourse"></bean>
- 在student类中编写方法
//study Course
public void learn(String name){
ApplicationContext context = new ClassPathXmlApplicationContext("org/conf/applicationContext.xml");
ICourse iCourse = (ICourse)context.getBean(name);
iCourse.learn();
}
- 测试
public static void testStudent(){
//上下文对象加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("org/conf/applicationContext.xml");
Student student = (Student) context.getBean("student1");
//System.out.println(student);
student.learn("javaCourse");
student.learn("htmlCourse");
}
学习笔记加入依赖注入的话内容篇幅太大,所以选择将依赖注入放到另一篇博客中。