Spring 入门
一、spring
1、spring简介
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
官网:https://spring.io/projects/spring-framework
2、spring所需要的依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
3、spring优点
- spring是一个开源的免费的框架(容器)
- spring是一个轻量级的、非侵入式的框架
- 控制反转(ioc)、面向切面编程(aop)
- 支持事务的处理,对框架整合的支持
spring就是一个轻量级的控制反转和面向切面编程的框架
4、spring的组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBakA0ss-1598689652925)(C:\Users\achao\AppData\Roaming\Typora\typora-user-images\image-20200822103946846.png)]
相关模块的解释:Spring模块组成
5、IOC控制反转的理念
- 常规场景:
在使用Service层调用Dao层的时候,Service层往往需要初始化一个Dao层实例来实现使用相应的方法,实际使用的时候如下代码所示:
// Dao层
public class UserDao{
public UserDao(){
}
public String getUer(){
System.out.println("正在使用UserDao查询用户");
}
}
// Service层
public class UserService{
private UserDao userdao = new UserDao(); // 经常要修改这个实例对象
public UserService(){
}
public void getUser(){
this.userdao.getUser();
}
}
传统的这种方式使用的时候有一种弊端,当我们想在用户层面使用Service层来查询用户信息的时候,想用不同的Dao层方式,这时候就要程序员在后台修改实例对象,极为不方便。
- 解决办法就是,当用户调用Service的方法的时候,可以通过Service的set方法对里面的实例对象指定,从而实现控制权从程序员向用户的转变。
二、HellowSpring
1、 创建一个Hellow类
public class Hellow {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
@Override
public String toString() {
return "Hellow{" +
"str='" + str + '\'' +
'}';
}
}
这里类中的set和get方法必须是完整地,因为spring中向Hellow类中的属性赋值的时候是使用set方法操作的
2、 在resources文件夹下创建一个spring的配置文件
<?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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--创建一个bean,id唯一标识,class指向这个类的全限定名。-->
<bean id="hellow" class="com.achao.pojo.Hellow">
<!--为当前类中的属性赋值-->
<property name="str" value="Spring"></property>
</bean>
</beans>
3、 在测试类中通过context获取到这个bean,并使用其中的方法:
public class Mytest {
public static void main(String[] args) {
// 获取spring的配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// 通过Hellow的bean id创建了这个对象
Object hellow = context.getBean("hellow");
// 调用这个类的方法
System.out.println(hellow.toString());
}
}
4、 执行成功!
初次接触的时候感觉是配置比较麻烦,但是后面的学习会发现这种将代码解耦合的方式还是很方便的。所谓的IOC 就是把类交给spring来创建,管理,装配!
5、总结
- 配置文件中使用bean标签将需要spring管理的类映射起来
- 配置文件中使用properties标签对管理的类进行属性赋值(value,ref)
- 如果类中的属性关联到另一