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实现简易的分词器功能
Jun 15 Java/Android
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
Java框架入门之简单介绍SpringBoot框架
Jun 18 Java/Android
Java elasticsearch安装以及部署教程
Jun 28 Java/Android
spring boot中nativeQuery的用法
Jul 26 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
Java基于Dijkstra算法实现校园导游程序
Mar 17 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
Java 常见的限流算法详细分析并实现
Apr 07 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 Java/Android
Java异常体系非正常停止和分类
Jun 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
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
jquery处理json对象
2014/11/03 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
vue v-model的用法解析
2020/10/19 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
小结Python的反射机制
2020/09/28 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
机械个人求职信范文
2014/01/24 职场文书
医药销售求职信范文
2014/02/01 职场文书
安全生产管理责任书
2014/04/16 职场文书
林肯就职演讲稿
2014/05/19 职场文书
护士心得体会范文
2016/01/25 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python