初学spring5(五)使用注解开发

news2024/12/23 17:24:28

学习回顾:初学spring5(四)自动装配

一、使用注解开发

二、说明

在spring4之后,想要使用注解形式,必须得要引入aop的包
在这里插入图片描述
在配置文件当中,还得要引入一个context约束

<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
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

</beans>

三、Bean的实现

我们之前都是使用 bean 的标签进行bean注入,但是实际开发中,我们一般都会使用注解!

1、配置扫描哪些包下的注解

<!--指定注解扫描包-->
<context:component-scan base-package="com.tang.pojo"/>

2、在指定包下编写类,增加注解

@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
   public String name = "小唐";
}

3、测试

@Test
public void test(){
   ApplicationContext applicationContext =
       new ClassPathXmlApplicationContext("beans.xml");
   User user = (User) applicationContext.getBean("user");
   System.out.println(user.name);
}

四、属性注入

使用注解注入属性

1、可以不用提供set方法,直接在直接名上添加@value(“值”)

@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
   @Value("小唐")
   // 相当于配置文件中 <property name="name" value="秦疆"/>
   public String name;
}

2、如果提供了set方法,在set方法上添加@value(“值”);

@Component("user")
public class User {

   public String name;

   @Value("小唐")
   public void setName(String name) {
       this.name = name;
  }
}

五、衍生注解

我们这些注解,就是替代了在配置文件当中配置步骤而已!更加的方便快捷!

@Component三个衍生注解

为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

  • @Controller:web层
  • @Service:service层
  • @Repository:dao层
    写上这些注解,就相当于将这个类交给Spring管理装配了!

六、自动装配注解

在Bean的自动装配已经讲过了,可以回顾!

七、作用域

@scope

  • singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。
    -prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
@Controller("user")
@Scope("prototype")
public class User {
  @Value("小唐")
  public String name;
}

八、小结

XML与注解比较

  • XML可以适用任何场景 ,结构清晰,维护方便
  • 注解不是自己提供的类使用不了,开发简单方便

xml与注解整合开发 :推荐最佳实践

  • xml管理Bean
  • 注解完成属性注入
  • 使用过程中, 可以不用扫描,扫描是为了类上的注解
<context:annotation-config/>  

作用:

  • 进行注解驱动注册,从而使注解生效
  • 用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
  • 如果不扫描包,就需要手动配置bean
  • 如果不加注解驱动,则注入的值为null!

九、基于Java类进行配置

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。

测试:
1、编写一个实体类,Dog

@Component  //将这个类标注为Spring的一个组件,放到容器中!
public class Dog {
  public String name = "dog";
}

2、新建一个config配置包,编写一个MyConfig配置类

@Configuration  //代表这是一个配置类
public class MyConfig {

  @Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
  public Dog dog(){
      return new Dog();
 }

}

3、测试

@Test
public void test2(){
  ApplicationContext applicationContext =
          new AnnotationConfigApplicationContext(MyConfig.class);
  Dog dog = (Dog) applicationContext.getBean("dog");
  System.out.println(dog.name);
}

4、成功输出结果!

导入其他配置如何做呢?

1、我们再编写一个配置类!

@Configuration  //代表这是一个配置类
public class MyConfig2 {
}

2、在之前的配置类中我们来选择导入这个配置类

@Configuration
@Import(MyConfig2.class)  //导入合并其他配置类,类似于配置文件中的 inculde 标签
public class MyConfig {

  @Bean
  public Dog dog(){
      return new Dog();
 }

}

关于这种Java类的配置方式,我们在之后的SpringBoot 和 SpringCloud中还会大量看到,我们需要知道这些注解的作用即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/711382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js模块化加载机制

优先从缓存中加载 模块在第一次加载后会被缓存。这也意味着多次调用 require() 不会导致模块的代码被执行多次 注意:不论是内置模块、用户自定义模块、还是第三方模块&#xff0c;它们都会优先从缓存中加载&#xff0c;从而提高模块的加载效率 $就像下方图中测试 内置模块…

【软件测试】MySQL操作数据表常用sql语句(汇总)

目录&#xff1a;导读 前言 一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 数据表有哪些操作…

【JavaEE初阶】HTML

摄影分享~ 文章目录 一.第一个HTML程序1.创建一个HTML文件并运行2.在vscode中创建HTML文件并运行HTML代码的特点 二.HTML中的标签1.注释标签2.标题标签3.段落标签4.换行标签5.格式化标签6.图片标签&#xff1a;img7.超链接标签8.表格标签9.列表标签10.from标签input标签selec…

Tomcat概念及部署

一.Tomcat的概述 1.Tomcat介绍 &#xff08;1&#xff09;免费的、开放源代码的web应用服务器。 &#xff08;2&#xff09;主要处理的是动态页面&#xff08;做一个运行后端的程序&#xff09;可以处理静态页面&#xff0c;处理效果不及apache和nginx。 &#xff08;3&…

类变量和类方法的基本使用

什么是类变量 类变量也叫静态变量/静态属性&#xff0c;是该类的所有对象共享的变量&#xff0c;任何一个该类的对象访问它时&#xff0c;取到的都是相同的值&#xff0c;同样任何一个该类的对象去修改它时&#xff0c;修改的也是同一个变量。 如何定义类变量 定义语法&…

实战线性回归模型

引言 线性回归是一种最简单、也是最常用的预测模型&#xff0c;主要用于处理自变量和因变量之间的线性关系。举个例子&#xff0c;假设你是一名大学生&#xff0c;正在为你的经济学课程做一个研究项目&#xff0c;你想要知道大学生的学习时间和GPA&#xff08;绩点平均分&…

React 搭建DvaJS开发环境

那么 后面我们就开始将DvaJS了 他是一个特别优秀的React轻量级应用框架 他的使用了非常大 很多公司也都有在应用 他是 redux 和 redux-saga 的解决方案 可以简化操作 还内置了react-router 路由 和 fetch 网络请求 首先 它的学习并不困难 因为 Api本身其实比较少 他对于redux…

如何优化Apple搜索广告

Apple Search Ads是促进应用发展的工具&#xff0c;如果我们已经投放了广告&#xff0c;那么就要观察投放效果&#xff0c;及时识别广告薄弱的地方&#xff0c;可以给我们更多的机会去优化它并扩大其投放效果。 再开始投放广告之前&#xff0c;要确保我们的应用商店列表已经优…

vue_前后端项目分离操作-查询操作

前后端项目分离操作 使用搭建好的vue项目和ssm项目 功能需求分析 后端 查询 持久层 ​ 发送两条sql查询总条数和结果集(limit容易写死) ​ 使用分页插件pageHelper解决分页的功能 ​ 在pom.xml中添加依赖 <!--pagehelper--><dependency><groupId>com…

【C语言const关键字】

C语言const关键字 C语言之const关键字1、什么是const?2、const的用法2.1、const作常量的修饰符例程12.2、const修饰函数的参数例程2 3、const与指针变量的搭配3.1、指针与const的应用例程3.2、指针与const的应用延申二级指针 4、结束语 C语言之const关键字 前言&#xff1a; …

iOS iPadOS safari 独立Web应用屏幕旋转的时候 window.innerHeight 数值不对。

iOS iPadOS safari 独立Web应用屏幕旋转的时候 window.innerHeight 数值不对 一、问题描述 我有一个日记应用&#xff0c;是可以作为独立 Web 应用运行的那种&#xff0c;但在旋转屏幕的时候获取到的 window.innerHeight 和 window.innerWidth 就不对了&#xff0c;不是屏幕的…

无法安装此app,因为无法验证其完整性 ,解决方案

最近有很多兄弟萌跟我反应“无法安装此app,因为无法验证其完整性 ”&#xff0c;看来这个问题无法避免了&#xff0c;今天统一回复下&#xff0c;出现提示主要有以下几种可能 1.安装包不完整 首先申请我所有分享的破解软件全部都有自己校验过&#xff0c;一般不会存在问题出非你…

【视频观看记录】Bubbliiiing的Pytorch 搭建自己的Unet语义分割平台(Bubbliiiing 深度学习 教程)

来源 b站 地址 什么是语义分割 语义分割&#xff1a;对图像每个像素点进行分类 常见神经网络处理过程&#xff1a;Encoder提取特征&#xff0c;接着Docoder恢复成原图大小的图片 UNet整体结构 分为三个部分 主干特征提取部分&#xff1a; 卷积和最大池化的堆叠获得五个初…

win10安装pytorch GPU

我记得以前安装过深度学习库GPU版本&#xff0c; 需要安装cuda什么的&#xff0c;翻了下还真写过一篇win10安装tensorflow的文章&#xff0c;但是流程不止不详细&#xff0c;还不清晰。这次就再记录一遍 这次安装的是pytorch&#xff0c;这么多年似乎pytorch要逐渐统一深度学习…

JavaEE语法第二章之多线程(初阶二)

目录 一、线程常用方法 1.1启动一个线程-start() 1.2中断一个线程 1.2.1使用自定义的变量来作为标志位. 1.2.2使用 Thread.interrupted() 或者 Thread.currentThread().isInterrupted() 代替自定义标志位. 1.2.3观察标志位是否清除 1.3等待一个线程-join() 1.4获取当前…

Typora文本的使用

1. 如何创建目录&#xff1f; 输入几个#&#xff0c;再加空格&#xff0c;写入文字回车后就是几级标题&#xff1b; 2. 如何输入代码块&#xff1f; 英文状态下&#xff0c;输入三个反引号&#xff0c;然后回车即可&#xff1b; 3. 如何输入竖线和小圆点&#xff1f; 4. 如何…

SSH远程直连Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试8. SSH固定地址连接测试 转载自cpolar极点云文章&#xff1a;SSH远程直连Docker容器 在某些特殊需求下,我们想ssh…

使用显式特征的在线交互感知提升网络

目录 1介绍 2相关工作 2.1提升建模 2.2特征交互 3前提 4提出的方法 4.1架构 4.2训练 5试验评估 6结论和未来 英文题目&#xff1a;Explicit Feature Interaction-aware Uplift Network for Online Marketing 翻译&#xff1a;使用显式特征的在线交互感知提升网络 单…

MATLAB 之 Simulink 系统仿真实例和 S 函数的设计与应用

这里写目录标题 一、Simulink 系统仿真实例1. 方法一2. 方法二3. 方法三 二、S 函数的设计与应用1. 用 MATLAB 语言编写 S 函数1.1 主程序1.2 子程序 2. S 函数的应用 一、Simulink 系统仿真实例 下面的应用实例我们将分别采用不同建模方法为系统建模并仿真。例如&#xff0c;…