文档章节

简单了解Spring 的注解

不会再一纸一梦一笙
 不会再一纸一梦一笙
发布于 2017/05/19 20:37
字数 942
阅读 8
收藏 0
点赞 0
评论 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 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
Spring Boot是如何实现自动配置的

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

技术小能手
07/09
0
0
Spring实战 (四) AOP

在软件开发中,分布于应用多出的功能被称为和横切关注点. 通常,这些横切关注点从概念上是与应用的业务逻辑相分离的(但是往往直接嵌入到应用的业务逻辑中).将这些横切关注点与业务逻辑相分离正...

kenshiro
2013/09/15
0
0
Spring Boot 自动配置的 “魔法” 是如何实现的?

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

sylvanassun
06/10
0
0
Spring3.1 Cache注解

需要感慨一下,spring3.0时丢弃了2.5时的spring-modules-cache.jar,致使无法使用spring来方便的管理cache注解,好在3.1.M1中增加了对cache注解的支持,可喜可贺啊! 希望了解spring2.5的cac...

小样
2012/02/28
0
0
dubbo “插入”到spring框架

作为一个分布式服务治理框架,dubbo做的非常好,在业界使用很广,所以最近研究了下这个框架。任何框架要研究其原理最好的办法之一就是沿着其运行流 程进行追踪,这样就能从上到下,从粗到细对...

cc-s
2015/10/29
0
0
Spring Boot整合MyBatis学习总结

公司的很多项目都陆陆续续引入了Spring Boot,通过对Spring Boot的接触了解发现其真的是大大地简化了开发、简化了依赖配置,很多功能注解一下就可以实现,真的是太方便了。下面记录了一个Spr...

zhuwensheng
06/29
0
0
疯狂Spring Cloud连载(13)——Feign第三方注解与注解翻译器

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

杨大仙的程序空间
2017/10/26
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
25分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/ Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本...

小灰灰Blog
29分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
33分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
34分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
38分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
45分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
50分钟前
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
55分钟前
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
今天
0
0
2018年7月23日课程

一、LVS-DR介绍 director分配请求到不同的real server。real server 处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了...

人在艹木中
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部