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 相关文章推荐
Java 将PPT幻灯片转为HTML文件的实现思路
Jun 11 Java/Android
Jackson 反序列化时实现大小写不敏感设置
Jun 29 Java/Android
Spring实现内置监听器
Jul 09 Java/Android
使用@Value值注入及配置文件组件扫描
Jul 09 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
SpringBoot 集成短信和邮件 以阿里云短信服务为例
Apr 22 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 Java/Android
Java+swing实现抖音上的表白程序详解
Jun 25 Java/Android
springboot+rabbitmq实现智能家居实例详解
Jul 23 Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 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
改进的IP计数器
2006/10/09 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
php中动态变量用法实例
2015/06/10 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
深入理解Python中的super()方法
2017/11/20 Python
python实现SOM算法
2018/02/23 Python
python定时截屏实现
2020/11/02 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
机械设计及其自动化求职推荐信
2014/02/17 职场文书
检举信的格式及范文
2014/04/04 职场文书
调查研究项目计划书
2014/04/29 职场文书
运动会广播稿200字
2014/10/18 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书