文档章节

简单了解Spring 的注解

不会再一纸一梦一笙
 不会再一纸一梦一笙
发布于 2017/05/19 20:37
字数 942
阅读 8
收藏 0

在学习spring注解的时候,刚开始是不理解的。不明白其中的原理,之后仔细想了想,敲了一遍代码之后,

就明白了其中的原理,当然只是一些简单的常用的注解,拿出来分享一下,希望对您有所帮助,毕竟第一次

写博客。不足之处,还望见谅。

首先,Spring两大核心亮点就是IOC容器以及AOP切面编程。
所谓的IOC容器,也叫控制反转或者DI(依赖注入),简单理解,其特点就是不用程序员自己创建对象以及

给创建的对象赋值。

在没有使用注解的时候,我们都是在applicationContext.xml的配置文件中

<bean id="" class=""/>来自动生成对象。也就是说,我们还要在配置文件中写bean标签来实现对象。

但是使用了注解之后,生成对象,我们就不用写bean了,减少了代码。

介绍的注解:

@Repository:一般写到dao上面:创建对象
@Service:一般写到Service上面:创建对象
@Resource和 @Autowired:赋值
@Controller:控制层
@Component:当不知道是什么类型时,就可以写这个,这个是其他注解的父类,一般用来标注实体类

参考代码:模拟了控制层,业务层,还有dao数据访问层

模拟控制层代码:

@Controller("control")
/**
 * 表示控制层:括号里面的“ ”,相当于原xml配置文件<bean id="control" class="">中的id。用来表

示创建对象的id
 * 具体怎么用,看后面的测试代码
 * @author wordxiao123
 *
 */
public class MyController
{
    @Resource
    //就是用来自动赋值的,后面什么也不写,表示按照service这个名字,查找id=service 的类,然

后实现service对象。
    //这个标签==@Autowrie标签,但是@Resource有两个属性,分别可以按照name和type在spring容器

中查找。
    private IUsersService service;
    
    //这个方法就是调用service对象的方法,返回一个字符串。
    public String returnStr(){
        
        return service.returnStr();
    }
}


模拟业务层的接口

public interface IUsersService
{
    /* 返回字符串*/
    String  returnStr();
}

模拟业务层接口的实现类

 

/**
 * @Service("service")
 * <bean id="service" class="">
 *
 * @author wordxiao123
 */
@Service("service")
//这里的service,正好是控制层中要查找的service,所以找到了,就自动创建service的对象。
public class UsersServiceImpl implements IUsersService
{
    /**
     * <property name="studentDao" ref="studentDao"/>
     * @Resource(name = "studentDao")
     *
     * 如果传了name,默认会按照name指定的名称到Spring的容器中查询对象,
     * 如果不传name;默认会按照IAStudentDao变量名到Spring的容器中查询对象,
     * 如果按照name找不到,按照类型去找,包含了@Autowired的功能
     * 强烈建议使用@Resource
     *
     *
     * @Autowired:只会按照类型去匹配,
     * 如果有两个类型一模一样的对象,就无法赋值成功
     */
    @Resource
    //同理,赋值,查找id为studentDao的类,实例化。
    private IAStudentDao studentDao;
    
    @Override
    public String returnStr()
    {
        return studentDao.returnStr();
    }

}


模拟dao层的接口


public interface IAStudentDao
{
    /* 返回一个字符串 */
    String returnStr();
}


模拟dao层的实现类

/**
 * 仓库
 * @Repository("studentDao")
 * <bean id="studentDao" class=""></bean>
 *
 * 小括号里面的字符串表示什么含义?
 * 对象的id,
 *
 * @author WangshSxt
 */
@Repository("studentDao")
//这也是前面要查找的("studentDao"),找到后,自动创建实例
public class AStudent2DaoImpl implements IAStudentDao
{

    @Override
    public String  returnStr()
    {
        return ("========save()=====");
    }
    
}

 

测试类(测试代码主要)

    
    @Test
    public void test()
    {
        MyController m = (MyController)ac.getBean("control");
        String string = m.returnStr();
        System.out.println("UsersServiceTest.save()"+string);
    }


还有applicationContext.xml的配置信息


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"

    default-autowire="byName">
    
    <!--
        注解:是写在类里面的
        一定要先告诉Spring,去哪个包里面的哪些类扫描注解
        
        不需要提供读写器:
     -->
    <context:component-scan base-package="cn.sxt.mybatis"/>
</beans>

© 著作权归作者所有

共有 人打赏支持
不会再一纸一梦一笙
粉丝 0
博文 1
码字总数 942
作品 0
海淀
程序员
私信 提问
Spring Boot [Hello World]

导读: 通过上篇文章, 我们已经了解到了 Spring Boot 作为一个Spring的脚手架, 其核心思想便是约定大于配置,通过一层层的封装让我们可以在最短的时间内搭建一个web项目,从繁琐的配置中走...

yangrd
2018/08/27
0
0
Spring:Grails的基础

最近,Peter Ledbrook撰写了一篇名为《Spring:Grails的基础》的文章,透过这些文字,我们可以了解Spring和Grails的关系,及其在Grails中发挥的作用。 Grails本身也是一个Spring MVC应用,拥...

groovyland
2010/06/24
0
3
Spring Boot是如何实现自动配置的

Spring Boot 是 Spring 旗下众多的子项目之一,其理念是约定优于配置,它通过实现了自动配置(大多数用户平时习惯设置的配置作为默认配置)的功能来为用户快速构建出标准化的应用。Spring Bo...

技术小能手
2018/07/09
0
0
Spring Boot [集成-MyBatis]

导读: 在上篇文章中我们介绍了spring-data-jpa的一些常用方法,在这篇文章中我们在介绍关于mybatis与Spring Boot 的集成,及一些常用方法 集成: 这里有两种方式,一种是常规的Spring 应用的...

yangrd
2018/08/27
0
0
Spring Boot HelloWorld 解析

开发环境 开发工具:IDEA 2017.2.2 链接: https://pan.baidu.com/s/1qxZLZtBR-Xr7JVkgmhZWzw 密码: wsqp 激活教程:http://idea.lanyus.com/ Spring Boot:2.0.3.RELEASE 参考文档:https://d......

爱编程的帅小伙
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java springcloud B2B2C o2o多用户商城 springcloud架构-docker-feign配置(五)

简介 上一节我们讨论了怎么用feign声明式调用cloud的生产者,这节我们讨论一下feign配置,通过编写配置类,我们可以自定义feign的日志级别,日志扫描目录,可以通过feign调用服务在eureka上的...

sccspuercode
29分钟前
2
0
长连接的心跳及重连设计

前言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。 顾名思义就是证明是否还活着的依据。 什么场景下需要心跳呢? 目前我们接触到的大多是一些基于长连接...

crossoverJie
29分钟前
3
0
OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
今天
901
13
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
4
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部