Spring学习笔记(一)

Spring框架

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
中文名 :Spring框架
创建原因:软件开发的复杂性
使用:JavaBean
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB
范围:任何Java应用
— 引用百度中对spring的介绍

即Spring轻量级框架的两个核心是 控制反转(IoC)面向切面(AOP)

  1. 创建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包;

  1. 创建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>
       
  1. 建立一个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 +
               '}';
   }


}

  1. 在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>
  1. 在测试文件中编写上下文对象加载配置文件
		//注意加载文件的路劲要正确,并注意导包问题
        //上下文对象加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("org/conf/applicationContext.xml");
        //根据bean中的id进行调用
        Student student = (Student) context.getBean("student1");
        System.out.println(student);

运行结果:
运行结果
而上面的配置文件实际上就是(控制反转)IOC容器,目的就是减少耦合性,帮助我们完成new对象并赋值的操作。个人认为减少耦合性就是让程序模块化,各个模块注重于不同的功能实现,而在需要使用的时候进行调用。

使用容器接口回调
  1. 在接口回调的时候,容器的调用也是十分奇妙的
//接口类
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课程学习...");
   }
}
  1. 在配置文件中加入javaCourse、HtmlCourse
    <!--多态,存放接口类-->
    <bean id="javaCourse" class="org.instance.javaCourse"></bean>
    <bean id="htmlCourse" class="org.instance.HtmlCourse"></bean>
  1. 在student类中编写方法
   //study Course
   public void learn(String name){
       ApplicationContext context = new ClassPathXmlApplicationContext("org/conf/applicationContext.xml");
       ICourse iCourse = (ICourse)context.getBean(name);
       iCourse.learn();
   }
  1. 测试
   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");
    }

运用容器接口回调结果


学习笔记加入依赖注入的话内容篇幅太大,所以选择将依赖注入放到另一篇博客中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值