Spring的入门
Spring的自我介绍:
Spring官网:https://spring.io/
Spring框架是一个开放源代码的框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。Spring解决了开发者在开发中遇到的许多常见的问题,提供了功能强IOC、AOP及Web MVC等功能
其中最重要的两个知识就是:控制反转(IOC)、面向切面编程(AOP)
当然还有一直听说过的Spring全家桶:Spring Framework、springBoot、Spring Data、SpringCloud、Spring Security。
1、Spring体系结构图:
2、 Spring的优缺点:
优点:
- Spring是轻量级框架,可以自由选择使用哪几个Spring模块
- 通过控制反转与依赖注入,实现了对象依赖之间的解耦,降低了业务对象替换的复杂性
- 支持面向切面编程,将业务功能与额外功能分离,实现了高内聚
- 提供了Spring容器,统一管理对象的生命周期和配置信息
- 等…
缺点:
- 使用了大量的反射机制,比较占内存
- 配置比较复杂(XML)
- 等…
3、Spring的导入
导入Spring主要有两种方式:
1、直接去官网下载jar包:网址:https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/3.2.0.RELEASE/
2、构建maven项目,在pom.xml写入依赖,加载依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.20</version>
</dependency>
<!--spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
<!-- spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.20</version>
</dependency>
<!-- spring-expression -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.20</version>
</dependency>
最终在jar包里面或者依赖库里面可以得到以下依赖项:
4、初试Spring
首先定义一个JavaBean类:
public class HelloSpring {
private String who;
public void setWho(String who) {
this.who = who;
}
public void print(){
System.out.println("hello"+this.who+"使用Spring框架");
}
}
创建spring的配置文件:applicationContext.xml
写bean,这里就不放顶部的配置信息
<bean id="HelloSpring" class="zte.springdemo.HelloSpring">
<!--给HelloSpring类型的helloSpring对象的属性who注入了一个值-->
<property name="who">
<value>张三</value>
</property>
</bean>
测试类:
之前通过new一个对象的方式实现:
public class test {
public static void main(String[] args) {
HelloSpring helloSpring = new HelloSpring();
helloSpring.setWho("张三");
helloSpring.print();
}
}
现在通过Spring容器管理去实现:
public class SpringTest01 {
@Test
public void springTest01(){
ApplicationContext context = new ClassPathXmlApplicationContext("springContest.xml");
HelloSpring helloSpring = (HelloSpring) context.getBean("HelloSpring");
helloSpring.print();
}
}
输出:
欢迎张三使用Spring框架
通过Spring框架,我们不需要再去new对象,而是通过applicationContext.xml配置文件中直接注入值,然后通过 newClassPathXmlApplicationContext(“springContest.xml”) 引入xml配置文件即可。
这个也就是.IOC控制反转
- 正向控制:需要手动new创建这个对象,缺点:耦合性太高
- 反向控制:需要从Spring容器中获取到需要的对象,不需要关心对象的创建过程,也就是把创建对象的权利反转给了Spring容器,优点:松耦合\
IOC实现原理:工厂模式+反射+配置文件
这样就完成了对Sping的一个导入以及初试!!!