欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring的注解开发以及整合junit测试

程序员文章站 2022-07-08 14:46:55
...

准备工作

  • 导包
    4+2+spring-aop
    Spring的注解开发以及整合junit测试

  • 导入命名空间(约束)

  • 在配置文件中开启注解开发
    在base-package中填入需要扫描的包,即该包下所有的类,都可以通过注解来完成开发

Spring的注解开发以及整合junit测试

注解开发

  • 将对象注册到容器
    早期spring框架开始注解的时候,使用@Component,后来随着开发人员的提议,就一个@Component,不能够清楚的知道属于那一层的结构,所以后面引入了

    • @Contorller :用于web层
    • @Service :用于service层
    • @Repository :用于dao层
  • 修改对象的作用范围
    使用@Scope(scopeName=” “),scopeName的取值可以为singleton和prototype

  • 为对象注入值 @Value(“”)
    1、通过反射的Field赋值,但是破坏了对象的封装性
    Spring的注解开发以及整合junit测试
    2、通过set方法赋值(推荐)
    Spring的注解开发以及整合junit测试

  • 引用类型注入
    1、自动装配注入
    Spring的注解开发以及整合junit测试
    如果有多个不同的car,就会导致不能注入你想要的引用类型
    Spring的注解开发以及整合junit测试
    Spring的注解开发以及整合junit测试
    为了解决以上的问题,添加与@Autowired搭配使用的@Qualifier(“car2”),这里就表明,要注入引用类型的car2

    2、手动注入,指定注入哪个名称的对象
    Spring的注解开发以及整合junit测试

  • 初始化和销毁
    Spring的注解开发以及整合junit测试

例子:编写一个User类

package cn.itcast.bean;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.xml.ws.RespectBinding;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

//<bean name="user" class="cn.itcast.bean.User"  />
//@Component("user")
//  @Service("user") // service层
//  @Controller("user") // web层
    @Repository("user")// dao层
//指定对象的作用范围
@Scope(scopeName="singleton")
public class User {
    private String name;
    @Value("18")
    private Integer age;

    //@Autowired //自动装配
    //问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象.
    //@Qualifier("car2")//使用@Qualifier注解告诉spring容器自动装配哪个名称的对象

    @Resource(name="car")//手动注入,指定注入哪个名称的对象
    private Car car;

    public Car getCar() {
        return car;
    }
    public void setCar(Car car) {
        this.car = car;
    }
    public String getName() {
        return name;
    }
    @Value("tom")   
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @PostConstruct //在对象被创建后调用.init-method
    public void init(){
        System.out.println("我是初始化方法!");
    }
    @PreDestroy //在销毁之前调用.destory-method
    public void destory(){
        System.out.println("我是销毁方法!");
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
    }

}

Spring整合junit测试

在测试类上加上注解配置后,在进行测试的时候,spring会自动加载spring容器,可以节约代码。

导包 4+2+aop+test
Spring的注解开发以及整合junit测试

配置注解
Spring的注解开发以及整合junit测试

直接测试即可

Spring的注解开发以及整合junit测试

相关标签: 注解开发