1. 程式人生 > 實用技巧 >Spring--->入門(IOC)

Spring--->入門(IOC)

  • Spring是一個開源免費的框架

  • Spring時一個輕量級的、非入侵式的框架

  • 控制反轉,面向切面程式設計

  • 支援事務的處理,對框架的整合的支援

1、新建Maven專案

導包,這一個載入一堆包,非常好用

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>

2、實現控制反轉

userDao(介面),userDaoImpl,UserService(介面),UserServiceImpl

只包含getUser()方法

import com.xian.Dao.UserDao;
import com.xian.Dao.UserDaoImpl;

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao){
        
this.userDao=userDao; } @Override public void getUser() { userDao.getUser(); } }
public class MyTest {
public static void main(String[] args) {
UserService userService=new UserServiceImpl();
((UserServiceImpl)userService).setUserDao(new UserDaoImpl());
((UserServiceImpl)userService).setUserDao(new MysqlDaoimpl());
userService.getUser();
}
}

把控制權交給使用者,使用者需要那個呼叫哪個

3、Spring實現控制反轉

1、建立Bean

<?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">
<bean id="hello" class="com.xian.pojo.Hello">
    <property name="str" value="Hello,Spring"/>
</bean>

</beans>

2、建立普通Java類

package com.xian.pojo;

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 + '\'' +
                '}';
    }
}

3、Test

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context1 = new ClassPathXmlApplicationContext("beans.xml");
        Hello hello = (Hello) context1.getBean("hello");
        System.out.println(hello.toString());

    }
}

注意:被建立Bean的pojo物件,會發生一些細微的變化

  • 程式不再new物件,由Spring建立
  • 程式不再賦值,由Spring進行賦值

4、Spring實現控制反轉

1.Bean的建立

<bean id="Mysql" class="com.xian.Dao.MysqlDaoimpl"></bean>
    <bean id="User" class="com.xian.Dao.UserDaoImpl"></bean>
    <bean id="UserServer" class="com.xian.Service.UserServiceImpl">
        <property name="userDao" ref="Mysql"></property>
    </bean>
</beans>

2.Test

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context1 = new ClassPathXmlApplicationContext("beans.xml");
        UserServiceImpl userServer = (UserServiceImpl) context1.getBean("UserServer");
        userServer.getUser();
    }
}
  • ref:引用Spring容器建立好的物件(beans檔案裡有的)

  • Value:具體的值,基本資料型別

5、IOC到底是個啥

物件由Spring建立,管理和裝配

6、IOC建立物件

  • 預設使用空構造
  • 類裡如果包含有參構造,空構造會失效,對應的引數必須賦值

建立方式

1.按下標
<bean id="hello" class="com.xian.pojo.Hello">
        <constructor-arg index="0" value="Spring,Hello"></constructor-arg>
</bean>
2.按引數名
<bean id="hello" class="com.xian.pojo.Hello">
        <constructor-arg name="str" value="Heello,Spring"/>
</bean>