文档章节

简单了解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
08/27
0
0
Spring Boot [集成-MyBatis]

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

yangrd
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......

爱编程的帅小伙
07/02
0
0
Spring:Grails的基础

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

groovyland
2010/06/24
0
3
疯狂Spring Cloud连载(9)——RestTemplate的负载均衡原理

本文节选自《疯狂Spring Cloud微服务架构实战》 京东购买地址:https://item.jd.com/12256011.html 当当网购买地址:http://product.dangdang.com/25201393.html Spring Cloud教学视频:htt...

杨大仙的程序空间
2017/10/18
0
2

没有更多内容

加载失败,请刷新页面

加载更多

arts-week10

Algorithm 905. Sort Array By Parity - LeetCode Review Who’s Afraid of the Big Bad Preloader? 一文读懂前端缓存 一个网络请求3个步骤:请求,处理,响应,而前端缓存主要在请求处响应这两步...

yysue
今天
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
5
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
127
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部