目录
首页:
1.Spring
1.1 简介
1.2 优点
2.IOC理论推导
3.IOC本质
4.HelloSpring
ERROR
5.IOC创建对象方式
5.1、无参构造 这个是默认的
5.2、有参构造
6.Spring配置说明
6.1、别名
6.2、Bean的配置
6.3、import
7.DL依赖注入环境
7.1 构造器注入
7.2 Set方式注入
7.3 案例(代码)
7.3.1.Student类
7.3.2 Address类
7.3.3 beans.xml
7.3.4 Mytest4类
我是跟着狂神老师的视频内容来整理的笔记,不得不说,真的收获颇丰,希望这篇笔记能够帮到你。
..... (¯`v´¯)♥ .......•.¸.•´ ....¸.•´ ... ( ☻/ /▌♥♥ / \ ♥♥
由Rod Johnson创建,雏形是interface21框架。理念是:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架!
org.springframework
spring-webmvc
6.0.11
org.springframework
spring-jdbc
6.0.11
1.UserDao接口
2.UserDaolmpl实现类
3.UserService业务接口
4.UserServicelmpl业务实现类
上面的四个类是我们写项目时的传统的写法。主要就是在实现类中实现功能,最后在业务实现类中最终实现。
通过在Servicelmpl中创建一个新的的UserDao对象,是可以实现方法的调用的,但是当后面所调用的类变得越来越多以后,这种方法就不太适合了。比如说,多了很多类似于UserDaolmpl的实现类,但是想要调用他们的话,就必须在其对应的Service中进行更改,太过于麻烦,耦合性太强。
解决方法:
public class UserServicelmpl implements UserService{
private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void getUser() {
userDao.getUser();
}
}
实现类:
简言之,就是把控制权交给了用户而不是程序员,我们可以通过所选择的来呈现不同的页面或者说是表现方式。用户的选择变多了。
这是一个视频里的小案例,旨在加深对bean的理解。beans.xml的正规名叫做applicationContext.xml,到后面可以用Import进行导入。
代码:
//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
//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
1.
原因:JDK版本过低造成,要大于1.8,我用的2.0
起别名,并不是覆盖原有的变量名
前面已经说过了。
1.依赖:bean对象的创建依赖于容器spring
2.注入:bean对象中的所有属性,由容器来注入
一个比较全的案例,包括了String,类,数组,list集合,Map,Set,Null,Properties。
代码如下:
//1.Student
package org.example;
import java.util.*;
public class Student {
private String name;
private Address address;
private String[] books;
private List hobbys;
private Map card;
private Set 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 getHobbys() {
return hobbys;
}
public void setHobbys(List hobbys) {
this.hobbys = hobbys;
}
public Map getCard() {
return card;
}
public void setCard(Map card) {
this.card = card;
}
public Set getGames() {
return games;
}
public void setGames(Set 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+
'}';
}
}
//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;
}
}
//3.beans.xml
西安
语文
数学
英语
化学
篮球
足球
台球
LOL
COC
12345
男
张三
//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());
}
}
最后,祝大家身体健康,学习快乐,天天向上!