网站建设开发报价方案,酒店品牌网站建设推广,jpress与wordpress,在局网站 作风建设前言#xff1a; #x1f49e;#x1f49e;今天我们依然是学习Spring#xff0c;这里我们会更加了解Spring的知识#xff0c;知道Spring是怎么更加简单的读取和存储Bean对象的。也会让大家对Spring更加了解。 #x1f49f;#x1f49f;前路漫漫#xff0c;希望大家坚持… 前言 今天我们依然是学习Spring这里我们会更加了解Spring的知识知道Spring是怎么更加简单的读取和存储Bean对象的。也会让大家对Spring更加了解。 前路漫漫希望大家坚持下去不忘初心成为一名优秀的程序员 个人主页⭐ 书生♡ gitee主页♂奋斗的小白 博客领域java编程 ,前端算法强训题目 写作风格超前知识点干货思路讲解通俗易懂 支持博主关注⭐点赞、收藏⭐、留言 目录 1.存储 Bean 对象1.1配置路径1.2 存储 Bean 对象的两种方式1.3 存储 Bean 对象-----类注解1.3.1 Controller控制器存储1.3.2 Service服务存储1.3.3 Repository仓库存储1.3.4 Component组件存储1.3.5 Configuration配置存储 1.4 存储 Bean 对象-----方法注解1.4.1 使用方法注解Bean1.4.2 方法注解的重命名 1. 5 Bean的命名1.6 类注解的具体讲解1.6.1 为什么要有五个类注解1.6.2 五大类注解的用途重点1.6.3类注解之间的关系 1.存储 Bean 对象 上一篇文章已经教会大家怎么去存储Bean对象了但是会发现比较麻烦所以这篇文章会教会大家怎么更加简单的去存储Bean对象。 在 Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解也就是我们接下来要学习 Spring 中的相 关注解来存储和读取 Bean对象。 1.1配置路径
在上一篇文章中我们存储 Bean 时需要在 spring-config 中添加⼀⾏ bean 注册内容才⾏。 但是会发现当我们需要注入多个类的时候就会添加很多的Bean标签会很麻烦那有什么可以解决吗 我们可以使用一行代码就去解决这个问题。
在我们的spring-config.xml中添加一行代码。 再添加这个代码的时候需要注意一定要配置包路径就是上图的标注的位置。 我们需要配置⼀下存储对象的扫描包路径只有被配置的包下的所有类添加了注解才能被正确的识别并保存到 Spring 中。 就是说你要扫描的对象在哪个包下面你就把这个包的路径写上去。 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contenthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsdcontent:component-scan base-packageSpring.demo/content:component-scan
/beans有人就会问了我不用包行不行直接在根目录下创建一个类是可以的那么我们就需要这个位置不用写包的路径写上两个**就可以了这个就代码扫描全部的。但是不建议这样写因为我们以后再公司的时候一定会有这样的路径的所以建议大家在这里还是写在包的下面更规范些。
1.2 存储 Bean 对象的两种方式
我们通过注解来存储对象在Spring中有两种方式 1.类注解Controller、Service、Repository、Component、Configuration。 2.方法注解Bean 下面为大家分别讲讲这两种方式。
1.3 存储 Bean 对象-----类注解
我们知道存储Bean对象有五种类注解。 Controller 控制器 Service 服务 Repository 仓库 Component 组件 Configuration 配置 下面为大家分开说说这五种类注解。重点是前三个
1.3.1 Controller控制器存储
我们在使用类注解的时候类注解全部都是在类的上面的因为我们是想将对象存储到 Spring 中整个类就是一个对象所以在类的上面。
使⽤ Controller 存储 bean 的代码展示 Controller//将对象存储到 Spring 中public class ApplicController {public String hello(){return Hello Spring !!!!;}}public static void main(String[] args) {//1.获取Spring对象上下文ApplicationContext contextnew ClassPathXmlApplicationContext(spring-config.xml);//2.取出bean对象//3根据Bean名称标识类型 来得到BeanApplicController applicController context.getBean(applicController, ApplicController.class);//3.使用beanSystem.out.println(applicController.hello());}1.3.2 Service服务存储
这个和上面的一样在类上面添加一个注解Service 使⽤ Service 存储 bean 的代码展示
Service
public class ApplicController {public String hello(){return Hello Spring !!!!;}
}其他的代码和上面的一样就不写了。这个也是可以运行成功的。
1.3.3 Repository仓库存储
这个和上面的一样在类上面添加一个注解Repository 使⽤ Repository存储 bean 的代码展示
Repository
public class ApplicController {public String hello(){return Hello Spring !!!!;}
}其他的代码和上面的一样就不写了。这个也是可以运行成功的。
1.3.4 Component组件存储
这个和上面的一样在类上面添加一个注解Component这个用的比上面三个会少一些 使⽤ Component存储 bean 的代码展示
Component
public class ApplicController {public String hello(){return Hello Spring !!!!;}
}其他的代码和上面的一样就不写了。这个也是可以运行成功的。
1.3.5 Configuration配置存储
这个和上面的一样在类上面添加一个注解Configuration这个使用会更少一点
使⽤ Configuration存储 bean 的代码展示
Configuration
public class ApplicController {public String hello(){return Hello Spring !!!!;}
}其他的代码和上面的一样就不写了。这个也是可以运行成功的。
1.4 存储 Bean 对象-----方法注解 1.4.1 使用方法注解Bean
类注解是添加到某个类上的⽽⽅法注解是放到某个⽅法上的。
那么为什么要引入方法呢 1因为一个类中可能会有很多个方法但是我并不全部都需要引入到Spring如果使用类注解那么就是将整个类注入Spring中耽误性能所以使用方法注解需要哪个方法就将那个方法注入 2.如果一个类中出现了两个同样的方法那么实用类注解的时候不知道去取一个那么就需要使用方法注解的name属性去区分了。 Controller
public class StudentBeans {Beanpublic Student student1() {// 伪代码构建对象Student stu new Student();stu.setId(1);stu.setName(张三);stu.setAge(18);return stu;}
}注意 在 Spring 框架的设计中⽅法注解 Bean 要配合类注解才能将对象正常的存储到 Spring 容器中 如果单独使用方法注解会报错的 1.4.2 方法注解的重命名
我们可以通过设置 name 属性给 Bean 对象进⾏重命名操作 格式为 Bean({“名称”}) 这个重命名的 name 其实是⼀个数组⼀个 bean 可以有多个名字每一个名称用双引号括起来用逗号分开。 注意事项: 当给Bean设置了name属性之后使用原方法名就不能获取到对象了只能使用设置的名称才能获取。 此时我们使⽤我们自定义的名称就可以获取到 对象了
Controller
public class StudentBeans {Beanpublic Student student1() {// 伪代码构建对象Student stu new Student();stu.setId(1);stu.setName(张三);stu.setAge(18);return stu;}Bean({s1,s2})public Student student2() {// 伪代码构建对象Student stu new Student();stu.setId(2);stu.setName(李四);stu.setAge(20);return stu;}}//另外一个启动类中
public static void main(String[] args) {//1.获取Spring对象上下文ApplicationContext contextnew ClassPathXmlApplicationContext(spring-config.xml);//2.取出bean对象Student student context.getBean(student1,Student.class);System.out.println(student);System.out.println();Student stu context.getBean(s1,Student.class);System.out.println(stu);System.out.println();//Student stu1 context.getBean(student2,Student.class);//这种是错误的//System.out.println(stu1);}1. 5 Bean的命名
我们在spring-config.xml中引入了这么一段代码我们就可以不使用bean标签了但是我们会发现没有了id这个属性了那我们在获取Bean对象的时候怎么办如果只使用类名的话就会出现问题。 其实当我们类名首字母是大写的是默认将类名的首字母小写就是我们的id标识了。
这个时候我们就会有几个疑问 问题1.如果类名首字母是小写要怎么从Spring中获取Bean? 答和首字母是大写是一直的都是用的是将类名首字母小写的方式来获取对象。 问题2:如果首字母和第二字母都是大写会怎样? 答:当使用默认规则首字母小写获取Bean对象时失败了! 正确获取Bean的方式是使用原类名就能成功获取到了。 问题3:项目中没有目录所有的类都写在 java根路径下怎么存、取 Bean对象? 答我们只需要改一下配置文件的包路径就行将路径改为** 1.6 类注解的具体讲解
1.6.1 为什么要有五个类注解
1.通过类注解可以了解当前类的用途就好像看到一个东西就知道这是哪里的具有很强的识别性) 2.功能有细微不同:这个在 Spring MVC/Spring Boot再详细展开。
1.6.2 五大类注解的用途重点
1.Controller(控制器)∶归属于业务逻辑层用来控制用户的行为它用来检查用户参数的有效性。 2.Service(服务):归属于服务层调用类实现相应的功能。【不直接和数据库交互的它类似于控制中心】 3.Repository(仓库):归属于持久层是直接和数据库进行交互的。通常每一个表都会对应一个Repository。 4.Configuration(配置)∶归属于配置层是用来配置当前项目的一些信息。 5. Component组件):归属于公共工具类提供某些公共方法。 1.6.3类注解之间的关系
先来看一下这五个类注解的源代码可以发现每一个类注解都有一个Componen 这个就表明Componen是他们的父类