Spring 使用注解开发


Posted in Java/Android onMay 20, 2022

在Spring4之后 要使用注解开发 必须保证aop包导入了

Spring 使用注解开发

使用注解需要导入context约束 增加 注解的支持

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启注解的支持-->
    <context:annotation-config/>
</beans>

@Component:组件放在类上 说明这个类被Spring管理了 就是bean

import org.springframework.stereotype.Component;
//等价于<bean id="user" class="com.kero.pojo.User"/>
@Component
public class User {
    public String name = "xxx";
}

@Value

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//等价于<bean id="user" class="com.kero.pojo.User"/>
@Component
public class User {
    @Value("xxx")
//等价于<property name="name" value="xxx"/>
    public String name;
}

或者

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//等价于<bean id="user" class="com.kero.pojo.User"/>
@Component
public class User {  
    public String name;
    @Value("xxx")
    public void setName(String name) {
        this.name = name;
    }
}

@Component有几个衍生的注解 我们在Web开发中会按照MVC三层架构分层

·dao[@Repository]

·service[@Service]

·controller[@Controller]

这四个注解功能一样 都是代表将某个类注册到Spring中 装配Bean

Spring 使用注解开发

Spring 使用注解开发

Spring 使用注解开发

注解的作用域@Scope

@Scope 放在类上,默认是单例模式

@Scope(prototype)是原型模式,每次创建的都是一个新的对象

Spring 使用注解开发

其作用等价于

Spring 使用注解开发

补充:

@Scope("singleton") 或者@Scope 单例模式 下面代码输出结果为true

@Scope("prototype")下面代码输出结果为false

import com.kero.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
    public static void main(String[] args) {
       ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = context.getBean("user", User.class);
        User user2 = context.getBean("user", User.class);
        System.out.println(user==user2);
    }
}

xml vs 注解

·xml更加万能 适用于任何场合 维护简单方便

·注解 不是自己类使用不聊 维护相对复杂

最佳实践:xml用来管理bean

注解只负责完成属性的注入

我们在使用的过程中 需要注意 使用以下代码

<!--指定要扫描的包 这个包下的注解就会生效->-->
    <context:component-scan base-package="com.kero"/>
    <!--开启注解的支持-->
    <context:annotation-config/>

针对最佳实践的例子

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
<!--指定要扫描的包 这个包下的注解就会生效->-->
    <context:component-scan base-package="com.kero"/>
    <!--开启注解的支持-->
    <context:annotation-config/>
    <bean id="user" class="com.kero.pojo.User" scope="prototype"/>
</beans>
import org.springframework.beans.factory.annotation.Value;
public class User {
    @Value("XXX")
    public String name;
    public void setName(String name) {
        this.name = name;
    }
}

到此这篇关于Spring详解使用注解开发流程的文章就介绍到这了!


Tags in this post...

Java/Android 相关文章推荐
springboot中一些比较常用的注解总结
Jun 11 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
Java框架入门之简单介绍SpringBoot框架
Jun 18 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
Java 泛型详解(超详细的java泛型方法解析)
Jul 02 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
dubbo服务整合zipkin详解
Jul 26 Java/Android
springboot如何接收application/x-www-form-urlencoded类型的请求
Nov 02 Java/Android
聊聊Lombok中的@Builder注解使用教程
Nov 17 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
MyBatis核心源码深度剖析SQL语句执行过程
Java 轮询锁使用时遇到问题
May 11 #Java/Android
Java 死锁解决方案
May 11 #Java/Android
JAVA springCloud项目搭建流程
May 11 #Java/Android
Java死锁的排查
May 11 #Java/Android
Java线程的6种状态与生命周期
May 11 #Java/Android
Java 多线程协作作业之信号同步
May 11 #Java/Android
You might like
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python实现计算最小编辑距离
2016/03/17 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
python 怎样进行内存管理
2020/11/10 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
UNIX特点都有哪些
2016/04/05 面试题
宣传策划类求职信范文
2014/01/31 职场文书
售后服务经理岗位职责范本
2014/02/22 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
交通事故调解协议书
2015/05/20 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
我的生日感言
2015/08/03 职场文书
珍爱生命主题班会
2015/08/13 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书