文档章节

简单了解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 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 Boot [集成-MyBatis]

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

yangrd
08/27
0
0
疯狂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
Spring Boot是如何实现自动配置的

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

技术小能手
07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
15分钟前
1
0
PHP规范PSR2

PSR标准 - PSR-2 为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的。 各个成员项目间的共性组成了这组代码规范。当开发者们在多个项目中合作...

geek土拨鼠
30分钟前
5
0
【极简】如何在服务器上安装SSL证书?

本文适合任何人了解,图形化操作。下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板。 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待...

皇冠小丑
39分钟前
1
0
深入理解编译器

深入理解编译器 原文出处 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 1 Rust中文社区首页 2 Rust中文社区Rust文章栏目 3 知乎专栏Rust语言 编程语言是如何工作的 从内部理解...

krircc
41分钟前
1
0
Centos7&docker-ce&compose&wordpress

如题,最近帮人装个WordPress,想起来用docker方便,这里做个记录。 因为docker要求linux内核版本3.10以上我记得,所以直接用的centos7省去很多麻烦。 主机在国内的先把yum源改成国内的阿里云...

虚拟世界的懒猫
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部