Spring入門案例(簡單)

Spring的入門案例(簡單)

該案例主要用來概述使用Spring IOC方式創建對象並調用方法,希望對大家有所幫助

Spring的概述

  1. 什麼是Spring :Spring是分層的JavaSE/EE應用 full-stack 輕量級開源框架
    Spring的兩大核心:
    IOC(Inverse Of Control 反轉控制)
    AOP(Aspect Oriented Programming 面向切面編程)
  2. 我們爲什麼要使用Spring:Spring是一站式框架,稱之爲一站式框架的原因是Spring可以整合其他框架
  3. 什麼是IOC :IOC的核心如下:
    1.工廠負責對象生命力週期的管理:(Spring管理與銷燬)
    2.對象的依賴由工廠完成注入(Spring維護對象間關係)
    Spring提出了對象工廠的概念,由Spring工廠來管理對象的生命週期。所謂的生命週期指的是從對象的創建一直到對象的銷燬都由Spring來管理,我們無需再自己new對象,而是從Spring工廠中獲取需要的對象,甚至對象依賴都是工廠來注入,無需手動注入依賴

案例流程總結:

第一步:創建maven Java工程,在pox.xml配置文件中導入以下jar包的座標

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
    </dependencies>

第二步:在Java包下創建以下包目錄
在這裏插入圖片描述

第三步:在comfig目錄下創建 SpringConfiguration類
在SpringConfigoration類上定義@ComponentScan註解告知Spring要掃描的包,Spring會>掃描並加載指定包下所有類中的註解。

@Configuration註解告知Spring當前類是一個配置類;

第四步:在dao包下創建Dao接口,接口中創建一個無返回值的findAll方法
在dao包下創建impl包
在impl包下創建UserDaoImpl類實現UserDao接口,實現接口的方法,並在實現類上定義接口@Component註解給實現類起一個別名

第五步:在service包下創建一個UserService接口在接口中定義一個findAllUsers方法
在service包下創建impl包
在impl包下創建一個UserServiceImpl類實現UserService接口,在UserServiceImpl類中通過@Resource註解(指定依賴,就是通過類的別名創建對象)創建對象,並在對象的前面添加private(這裏我定義的是UserDaoImpl對象),在UserServiceImpl中定義一個方法findAllUsers在類中打印查詢開始,調用UserDaoImpl對象的方法,打印查詢結束

第六步:在測試類中使用@Test註解進行測試
在測試方法中通過配置類創建對象(ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);),調用對象的getBean(“類的別名”)方法,方法的返回值Object類型,需要對對象進行強轉(UserService userServiceImpl = (UserService) applicationContext.getBean(“userServiceImpl”);),最後調用對象的方法(userServiceImpl.findAllUsers();),進行測試(運行測試方法)

具體代碼

comfing包

package com.czxy.comfig;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @Author Jimmy
 * @Date 2019/6/10 3:46 PM
 * @Desc
 */

//告知Spring要掃描的包,Spring會掃描並加載指定包下所有類中的註解。
@ComponentScan(basePackages = {"com.czxy.dao","com.czxy.service"})
//註解告知Spring當前類是一個配置類;
@Configuration
public class SpringConfiguration {
}

dao包

package com.czxy.dao;

public interface UserDao {
    public void findAll();
}

dao > impl包

package com.czxy.dao.impl;

import com.czxy.dao.UserDao;
import org.springframework.stereotype.Component;

/**
 * @Author Jimmy
 * @Date 2019/6/10 3:48 PM
 * @Desc
 */

@Component("userDaoImpl")
public class UserDaoImpIA implements UserDao {

    public void findAll() {
        System.out.println("A方式 查詢所有");
    }
}

service包

package com.czxy.service;

public interface UserService {
    public void findAllUsers();
}

service > impl包

package com.czxy.service.impl;

import com.czxy.dao.UserDao;
import com.czxy.service.UserService;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @Author Jimmy
 * @Date 2019/6/10 3:48 PM
 * @Desc
 */
@Component("userServiceImpl")
public class UserServiceImplA implements UserService {
    //指定依賴
    @Resource(name = "userDaoImpl")
    private UserDao userDao;
    public void findAllUsers() {
        System.out.println("查詢所有");
        userDao.findAll();
        System.out.println("查詢結束");
    }
}

test包

package com.czxy.test;

import com.czxy.comfig.SpringConfiguration;
import com.czxy.service.impl.UserServiceImplA;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import javax.annotation.Resource;

/**
 * @Author Jimmy
 * @Date 2019/6/10 3:48 PM
 * @Desc
 */
public class TestA {
	@Test
    public void test(){
       ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        UserService userServiceImpl = (UserService) context.getBean("userServiceImpl");
        userServiceImpl.findAllUsers();
    }
}

運行結果

在這裏插入圖片描述

整合JUnit4

只需要修改測試文件即可,前面在pom.xml文件中已經導入了spring-test jar的座標,代碼如下

package com.czxy.test;

import com.czxy.comfig.SpringConfiguration;
import com.czxy.service.impl.UserServiceImplA;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

/**
 * @Author Jimmy
 * @Date 2019/6/10 3:48 PM
 * @Desc
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class TestA {
    @Resource(name = "userServiceImpl")
    private UserServiceImplA serviceImplA;
    @Test
    public void test(){
        serviceImplA.findAllUsers();
    }
}

運行結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章