Fork me on GitHub

spring入门

ioc:https://www.jianshu.com/p/695b2a25a6ff
教学视频:https://www.bilibili.com/video/av14839030/

在eclipse里面遇到的问题

① .遇到红色波浪线就把鼠标放在上面,导入jar包用在crtl+shift+M
②.The constructor ClassPathXmlApplicationContext(String) refers to the missing type出现此问题可能是jar包没有导入成功,将jar包再导入一次

ioc底层原理

IOC:控制反转,把对象创建交给spring进行配置
DI:依赖注入,向类里面的属性设置值
依赖注入不能单独存在,需在ioc基础上完成操作。
1.png
2.png

四个最基本的jar包

1
beans core  context  expression  common-logging//日志

xml文件限制

1
2
3
4
5
6
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

测试文件

1
2
3
4
5
6
7
8
9
10
11
12
13
package cn.itcast.ioc;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.property.PropertyDemo1;
public class TestIOC {
@Test
public void testUser() {
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
PropertyDemo1 demo1 = (PropertyDemo1) context.getBean("demo");
demo1.test1();
}
}

Bean标签常用属性

①.id
起名称,可以任意命名
不能包含特殊符号
根据id得到配置对象

②.class属性
创建对象所在类的全路径

③.name属性
功能和id属性一样,name可以包含特殊字符

④.scope属性
在测试文件中调用两次函数:

  • singleton 默认值,单例
    运行结果:

  • prototype 多例

    运行结果:

  • request 创建对象并把对象放到request里面

  • session 创建对象并把对象放到session里面
  • globalSession 创建对象并把对象放到globalSession里面

属性注入:(spring里面只支持前两种)


set方法注入

1
2
3
4
5
6
7
8
9
10
11
package cn.itcast.property;
public class Book {
private String bookname;
public void setBookname(String bookname) {
this.bookname=bookname;
}
public void demobook() {
System.out.println("book...."+bookname);

}
}

然后在applicationContext.xml文件中使用以下方法给bookname赋值

有参数构造注入

1
2
3
4
5
6
7
8
9
10
package cn.itcast.property;
public class PropertyDemo1 {
private String username;
public PropertyDemo1(String username) {
this.username=username;
}
public void test1() {
System.out.println("demo1........"+username);
}
}

然后在applicationContext.xml文件中使用以下方法给username赋值

注入对象类型属性
通过set方法在UserService.java调用UserDao.java中的add函数

  • UserService.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package cn.itcast.ioc;
    public class UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
    this.userDao= userDao;
    }
    public void add() {
    System.out.println("Service........");
    userDao.add();
    }
    }
  • UserDao.java

    1
    2
    3
    4
    5
    6
    package cn.itcast.ioc;
    public class UserDao {
    public void add() {
    System.out.println("Dao........");
    }
    }

然后在applicationContext.xml文件中使用以下方法给调用

-------------本文结束感谢您的阅读-------------