目录
[1.1 简介](#1.1 简介)
[1.2 优点](#1.2 优点)
[5.1、无参构造 这个是默认的](#5.1、无参构造 这个是默认的)
[7.1 构造器注入](#7.1 构造器注入)
[7.2 Set方式注入](#7.2 Set方式注入)
[7.3 案例(代码)](#7.3 案例(代码))
[7.3.2 Address类](#7.3.2 Address类)
[7.3.3 beans.xml](#7.3.3 beans.xml)
[7.3.4 Mytest4类](#7.3.4 Mytest4类)
首页:
我是跟着狂神老师的视频内容来整理的笔记,不得不说,真的收获颇丰,希望这篇笔记能够帮到你。
..... (¯`v´¯)♥
.......•.¸.•´
....¸.•´
... (
☻/
/▌♥♥
/ \ ♥♥
1.Spring
1.1 简介
由Rod Johnson创建,雏形是interface21框架。理念是:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架!
- SSH: Struct2+Sppring+Hibernate
- SSM:SpringMVC+Spring+Mybatis
html
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.0.11</version>
</dependency>
html
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.0.11</version>
</dependency>
1.2 优点
2.IOC理论推导
1.UserDao接口
2.UserDaolmpl实现类
3.UserService业务接口
4.UserServicelmpl业务实现类
上面的四个类是我们写项目时的传统的写法。主要就是在实现类中实现功能,最后在业务实现类中最终实现。
通过在Servicelmpl中创建一个新的的UserDao对象,是可以实现方法的调用的,但是当后面所调用的类变得越来越多以后,这种方法就不太适合了。比如说,多了很多类似于UserDaolmpl的实现类,但是想要调用他们的话,就必须在其对应的Service中进行更改,太过于麻烦,耦合性太强。
解决方法:
java
public class UserServicelmpl implements UserService{
private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void getUser() {
userDao.getUser();
}
}
实现类:
3.IOC本质
简言之,就是把控制权交给了用户而不是程序员,我们可以通过所选择的来呈现不同的页面或者说是表现方式。用户的选择变多了。
4.HelloSpring
这是一个视频里的小案例,旨在加深对bean的理解。beans.xml的正规名叫做applicationContext.xml,到后面可以用Import进行导入。
代码:
java
//1.Hello
package org.example;
public class Hello {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
@Override
public String toString() {
return "Hello{"+
"str="+str+'\''+'}';
}
}
//2.beans.xml
<?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">
<!-- 这里的name的值就是类中变量名 -->
<bean id="hello" class="org.example.Hello">
<property name="str" value="spring"></property>
</bean>
</beans>
//3.实现测试类MyTest
import org.example.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");
Hello hello = (Hello) context.getBean("hello"); //这里的hello就是创建对象的变量名
System.out.println(hello.toString());
}
}
idea中自动生成返回对象的快捷键
ctr+alt+v
ERROR
原因 :JDK版本过低造成,要大于1.8,我用的2.0
5.IOC创建对象方式
5.1、无参构造 这个是默认的
<bean id="user" class="org.example.pojo.User"> <property name="name" value="张总"></property> </bean>
5.2、有参构造
- 通过下标获得
html
<bean id="user" class="org.example.pojo.User"> <constructor-arg index="0" value="王总"/> </bean>
- 通过变量的类型获得,但不建议用,因为当变量名有很多时便不适用了
html
<bean id="user" class="org.example.pojo.User"> <constructor-arg type="java.lang.String" value="赵总"/> </bean>
- 通过变量名来获得
html
<bean id="user" class="org.example.pojo.User"> <constructor-arg name="name" value="李总"/> </bean>
6.Spring配置说明
6.1、别名
起别名,并不是覆盖原有的变量名
6.2、Bean的配置
6.3、import
7.DL依赖注入环境
7.1 构造器注入
前面已经说过了。
7.2 Set方式注入
- 依赖注入:Set注入!
1.依赖:bean对象的创建依赖于容器spring
2.注入:bean对象中的所有属性,由容器来注入
7.3 案例(代码)
一个比较全的案例,包括了String,类,数组,list集合,Map,Set,Null,Properties。
代码如下:
7.3.1.Student类
java
//1.Student
package org.example;
import java.util.*;
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbys;
private Map<String,String> card;
private Set<String> games;
private String wife; //空指针
private Properties info; //不是很理解这个的意思
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String[] getBooks() {
return books;
}
public void setBooks(String[] books) {
this.books = books;
}
public List<String> getHobbys() {
return hobbys;
}
public void setHobbys(List<String> hobbys) {
this.hobbys = hobbys;
}
public Map<String, String> getCard() {
return card;
}
public void setCard(Map<String, String> card) {
this.card = card;
}
public Set<String> getGames() {
return games;
}
public void setGames(Set<String> games) {
this.games = games;
}
public String getWife() {
return wife;
}
public void setWife(String wife) {
this.wife = wife;
}
public Properties getInfo() {
return info;
}
public void setInfo(Properties info) {
this.info = info;
}
@Override
public String toString() {
return "Student{"+
"name="+name+'\''+
",address="+address.toString()+
",books="+ Arrays.toString(books)+
",hobbys="+hobbys+
",card="+card+
",games="+games+
",wife="+wife+'\''+
",info="+info+
'}';
}
}
7.3.2 Address类
java
//2.Address类
package org.example;
public class Address {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return address;
}
}
7.3.3 beans.xml
html
//3.beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<bean id="address" class="org.example.Address">
<property name="address">
<value>西安</value>
</property>
</bean>
<bean id="student" class="org.example.Student">
<property name="name" value="秦三"/>
<property name="address" ref="address"/>
<property name="books">
<array>
<value>语文</value>
<value>数学</value>
<value>英语</value>
<value>化学</value>
</array>
</property>
<property name="hobbys">
<list>
<value>篮球</value>
<value>足球</value>
<value>台球</value>
</list>
</property>
<property name="card">
<map>
<entry key="身份证" value="1111111111111"/>
<entry key="银行卡" value="2222222222222"/>
</map>
</property>
<property name="games">
<set>
<value>LOL</value>
<value>COC</value>
</set>
</property>
<property name="wife">
<null/>
</property>
<property name="info">
<props>
<prop key="学号">12345</prop>
<prop key="性别">男</prop>
<prop key="姓名">张三</prop>
</props>
</property>
</bean>
<!-- more bean definitions go here -->
</beans>
7.3.4 Mytest4类
java
//4.MyTest测试类
import org.example.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest4 {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Student student = (Student) context.getBean("student");
System.out.println(student.toString());
}
}
最后,祝大家身体健康,学习快乐,天天向上!