Spring视频教程
准备跟着网易云课堂的Spring教程先过一遍Spring框架的基础知识。
但是感觉视频有点过时,所以不用跟着视频教程把所有代码和配置文件都敲出来去实现,有点费时间,直接看懂一些关键概念就好,或者直接去看尚硅谷的Spring教学,更新一点。
综合知识点:
- Spring框架特性:轻量级、开源、一站式
- aop:面向切面编程,即扩展功能不是修改源代码实现。
- ioc :控制反转,不通过new来创建对象,而是交给Spring配置。
- 一站式的体现:Spring在javaee的三层结构中都有对应的不同解决技术
1)web层(表示层):SpringMVC
2)service层(业务层):Spring的ioc
3)dao层(数据访问层):Spring的jdbcTemplet
ioc操作知识点:
- ioc 操作分为1)配置文件方式。2)注解方式。
- ioc 底层原理使用技术包含四个部分
1)xml配置文件
2)dom4j解决xml
3)工厂设计模式,与Effective Java中的静态工厂方法是同一个概念。
4)反射 - ioc是为了解决不同类之间(尤其是servlet服务器调用User类方法)的耦合度,一种高内聚、低耦合的开发思想。
- ioc底层原理的过程
IOC 入门案例
第一步 导入核心jar包
核心的jar包,包括Beans、Core、Context和SpEL(expression)。
视频中是手动导入的方法,如果使用IDEA和maven来管理,就可以更加方便的下载。
首先在创建新项目的时候设置一下选用maven模版:
之后就会创建出带有pom.xml配置文件的项目,我们向这个pom.xml添加jar包的依赖,使用快捷键command+n(windows用户Alt+Insert),搜索对应的jar包(比如spring-beans, spring-core, spring-context, spring-expression),再按下右下角弹出的自动导入即可,这里可能需要使用vpn或者修改镜像来下载:
下载完成之后,在右边就可以查看导入的jar包:
第二步 创建包和类,在类里面创建方法
package cn.itcast.ioc;
public class User {
public void add() {
System.out.println("add......");
}
public static void main(String[] args) {
//原始做法
User user = new User();
user.add();
}
}
第三步 创建spring配置文件,配置创建类
(1)spring配置文件的名称和位置不是固定的,视频中建议放在src下,名称为bean1.xml,但是因为我们使用maven模式创建的项目,要把bean1.xml和javaclass放在同一个目录下:
<?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">
<!-- ioc入门 -->
<bean id="user" class="cn.itcast.ioc.User"></bean>
</beans>
代码中beans标签里面的一长串视频里是按照文档找的,我是直接上网复制的(感觉有点麻烦,应该会有更好的解决办法)
第四步 写代码测试对象
这里再创建一个测试类来测试一下,为了简化流程,视频中的教程用@Test下载导入了另外一个jar包来可以直接测试类(不需要写main代码?):
package cn.itcast.ioc;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIOC {
@Test
public void testUser() {
//1加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
//2 得到配置创建的对象
User user = (User) context.getBean("user");
System.out.println(user);
user.add();
}
}
测试的时候出现了一个问题,说找不到xml文件,应该也和maven管理包有关,看了这个教程的方式一就解决了。
小知识点:
-
静态工厂:静态方法,返回类的对象。
-
实例工厂:非静态方法,返回类的对象。
-
Spring的bean管理有三种实例化方式:1)无参数构造;2)静态工厂构造;3)实例工厂构造;
-
bean标签中的scope属性有5个:前两个比较重要,分别代表在多次创建时是单个实例还是多个不同的实例。
-
属性注入,对象类型属性注入以及复杂注入看视频11-15,讲的很详细,偷懒不总结了。
-
属性注入又称为依赖注入(DI),依赖注入需要IOC来创建对象之后才能完成。
Spring整合web项目
原理:其内部实现以及封装好了,只需要了解一下就行啦。
Spring管理beans(注解)
注解就是代码里面的特殊标记,以"@注解名称(属性名称=属性值)"的方式出现在方法,类,属性前面,可以用来完成一些功能。
注解功能:(使用之前需要做jar包导入和配置文件的准备)
-
注解创建对象
还可以使用@Scope(value = “prototype”)来选择创建多实例还是单实例对象。 -
注解注入属性
以对象属性注入为例,先用两个注解创建对象,然后再在service对象中创建注入对象的属性,在属性前用@Autowired注解即可根据类名称完成自动注入,不需要写set方法。
或者也可以用更加常用的@Resource(name=“xxx”)来指定对应value的创建类来注入,类似于普通注入里的ref注入。