Spring的狂神说笔记
Spring-Study
代码:https://github.com/Donkequan/Spring-Study
1. 简介
-
SSH:Struct2 + Spring + Hibernate
-
SSM: SpringMVC + Spring + Mybatis
官网: https://spring.io/projects/spring-framework#overview
官方下载: https://repo.spring.io/release/org/springframework/spring/
GitHub: https://github.com/spring-projects/spring-framework
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
-
spring是开源的免费的容器。
-
spring是一个轻量级的,非入侵式的。
-
控制反转(IOC),面向切面编程 (AOP)。
-
支持事务处理,对框架整合的支持。
总结:spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
2.IOC理论
-
UserDao
-
UserDaoImp
-
UserSevice
-
UserServiceImp
在之前,用户的需求可能会影响原来的代码。
使用一个set。
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
-
之前是主动创建对象,控制权在程序员手上。
-
使用set之后,是被动接受对象。
3. Hello Spring
pojo中
package com.hou.pojo;
public class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
resource种
test
import com.hou.pojo.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Mytest {
public static void main(String[] args) {
//获取spring上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//我们的对象下能在都在spring·中管理了,我们要使用,直接取出来就可以了
Hello hello = (Hello) context.getBean("hello");
System.out.println(hello.toString());
}
}
bean = 对象 id = 变量名 class = new的对象 property 相当于给对象中的属性设值
核心用set注入
第一个文件中
4. IOC创建对象的方式
-
使用无参构造创建对象,默认。
-
使用有参构造
下标赋值
类型赋值(不建议使用)
<bean id="user" class="com.hou.pojo.User">
<constructor-arg type="java.lang.String" value="dong"/>
</bean>
直接通过参数名
<bean id="user" class="com.hou.pojo.User">
<constructor-arg name="name" value="hou"></constructor-arg>
</bean>
Spring类似于婚介网站!
你想不想要,对象都在里面。注册bean之后用不用被实例化。
5. Spring配置
别名
<bean id="user" class="com.hou.pojo.User">
<constructor-arg name="name" value="hou"></constructor-arg>
</bean>
<alias name="user" alias="user2aaa"/>
Bean的配置
-
id:bean的id标识符
-
class:bean对象所对应的类型
-
name:别名,更高级,可以同时取多个别名。
import
一般用于团队开发,它可以将多个配置文件,导入合并为一个
<import resource="beans.xml"/>
6. DI依赖注入
构造器注入
set方式注入(重点)
-
依赖:bean对象的创建依赖于容器
-
注入:bean对象中的所有属性,由容器来注入
【环境搭建】
-
复杂类型
-
真实测试对象
package com.pojo;
import java.util.*;
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbies;
private Map<String, String> card;
private Set<String> game;
private Properties infor;
private String wife;