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 相关文章推荐
MybatisPlus代码生成器的使用方法详解
Jun 13 Java/Android
Java elasticsearch安装以及部署教程
Jun 28 Java/Android
Spring Cloud Gateway去掉url前缀
Jul 15 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
springmvc直接不经过controller访问WEB-INF中的页面问题
Feb 24 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
Java实战之课程信息管理系统的实现
Apr 01 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
Apr 28 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 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实现MVC
2016/03/02 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
python中怎么表示空值
2020/06/19 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
财务人员个人求职信范文
2013/12/04 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
工作检讨书怎么写
2015/01/23 职场文书
校园广播站开场白
2015/06/01 职场文书
八年级语文教学反思
2016/03/03 职场文书
六年级作文之关于梦
2019/10/22 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang