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();
    }
}

运行结果

在这里插入图片描述

发布了30 篇原创文章 · 获赞 40 · 访问量 6513

猜你喜欢

转载自blog.csdn.net/ScholarTang/article/details/91400632
今日推荐