Spring-IOC进阶篇来了!!!

别说谁变了你拦得住时间么 提交于 2020-04-26 23:21:05

Spring

一.IOC-进阶

1. 进阶案例1:面向接口编程

Dao、service先定义接口,再定义接口的实现类

为什么要用面向接口编程: 维护和扩展功能更方便

 

接口中暂不书写任何注解

 

service类:

@Component("demo1ServiceImpl")
public class Demo1ServiceImpl implements Demo1Service {
    @Resource(name="demo1DaoImpl")
    private Demo1Dao demo1Dao;
}

 

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class Demo1Test {
    @Resource(name="demo1ServiceImpl")
    private Demo1Service demo1Service;

    @Test
    public void run1(){
        System.out.println(demo1Service);
    }
}

 

 

2.​​​​​​​ 进阶案例2:衍生注解

@Component通用的注册组件的注解。

通过该注解,可以向spring注册组件

适用于:普通类(非Dao、非Service、非web层)

 

@Repository:专门注册Dao层的注解。

 

@Service:专门注册Service层的注解。

 

 

​​​​​​​进阶总结+异常总结

  • SpringConfiguration类注解:
  • 注解

    描述

    @Configuration

    用于标明当前类是一个Spring配置类。

    @ComponentScan

    用于自动扫描某个包下的注册组件。

    (扫描所有的@Component等注解修饰的类)

    格式:@ComponentScan(basePackages={"包名1","包名2"})

    说明:会自动扫描包名1及包名2下所有的注册组件

    扫描的注解包括:@Component、@Repository、@Service、@Controller

 

  • 注册组件注解:
  • 注解

    描述

    @Component

    用于注册组件。

    将当前类注册,交给spring管理。

    注意:注册名不能重复,否则报错。

    格式:@Component("注册名")

    @Repository

    专业用于Dao组件注册,用于替换Dao类上的@Component

    格式:@Repository("注册名")

    @Service

    专业用于Service组件注册,用于替换Service类上的@Component

    格式:@Service("注册名")

    @Controller

    专业用于Servlet组件注册,用于替换Servlet类上的@Component

    格式:@Controller("注册名")

  • 注入实例对象注解:
  • 注解

    描述

    @Resource

    用于使用已注册组件创建实例对象,并注入到此处修饰的变量中

    注意:name必须和之前的注册名保持一致,否则报错

    格式:@Resource(name="注册名/组件名")

注意事项!!!!=============>>>>>>

 

 

 

 

 

 

如果@Service注册组件时,未赋予组件名。

@Resource有几种常见写法?

@Resource(name=”类名小驼峰式)

@Resource 前提:该组件只能找到一个对象

 

 

  • 测试类注解:

注解

描述

@RunWith

告诉程序如何运行代码。

固定结构:

@RunWith(SpringJUnit4ClassRunner.class)

代码使用spring自带的junit4测试

@ContextConfiguration

向spring工厂加载配置类,并开始使用spring管理对象

固定结构:

@ContextConfiguration(classes={SpringConfiguration.class})

  • 可能出现的问题:

 

 

今日小结:

面向接口编程:为了维护和扩展功能的方便。

@Component----

----@Repository

----@Service

修饰类,把某个Java类管理对象的权利交给了spring。

依赖注入:

接口/实现类 类型的成员变量:@Resource

按名称:@Resource(name=”组件名)

按类型:@Resource

前提:该类型的对象在spring容器中只能存在1个

 

未完待续!!!

当然,后面还有更nice的,下篇给你更!!!

记得要留意关注,可别错过了噢!

 

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!