天天看點

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基礎上完成操作。

spring入門

1.png

spring入門

2.png

四個最基本的jar包

beans core  context  expression  common-logging//日志
           

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: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>
           

測試檔案

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屬性

在測試檔案中調用兩次函數:

spring入門

4.png

  • singleton 預設值,單例

    運作結果:

    spring入門
    3.png
  • prototype 多例
    spring入門
    5.png
    spring入門
  • request 建立對象并把對象放到request裡面
  • session 建立對象并把對象放到session裡面
  • globalSession 建立對象并把對象放到globalSession裡面

屬性注入:(spring裡面隻支援前兩種)

spring入門

set方法注入

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

指派

spring入門

有參數構造注入

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

spring入門

注入對象類型屬性

通過set方法在

UserService.java

調用

UserDao.java

中的

add函數

UserService.java

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

package cn.itcast.ioc;
public class UserDao {
     public void add() {
           System.out.println("Dao........");
       }
}
           

applicationContext.xml

檔案中使用以下方法給調用

spring入門