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;