单页淘宝客网站2014年行吗,免费网站建设培训学校,赤峰建设银行网站,常见网站类型文章目录 Spring Boot 注解简介1、五大类注解的作用2、五大类注解的关系3、通过注解获取对象4、获取Bean对象名规则解析 Spring Boot 注解简介
Spring Boot的核心就是注解。Spring Boot通过各种组合注解#xff0c;极大地简化了Spring项目的搭建和开发。五大类注解是Spring B… 文章目录 Spring Boot 注解简介1、五大类注解的作用2、五大类注解的关系3、通过注解获取对象4、获取Bean对象名规则解析 Spring Boot 注解简介
Spring Boot的核心就是注解。Spring Boot通过各种组合注解极大地简化了Spring项目的搭建和开发。五大类注解是Spring Boot注解中的关键接下来就给大家做详细的介绍。 使用注解的优势 1.采用纯java代码不在需要配置繁杂的xml文件 2.在配置中也可享受面向对象带来的好处 3.类型安全对重构可以提供良好的支持 4.减少复杂配置文件的同时亦能享受到springIoC容器提供的功能
1、五大类注解的作用
想要将对象存储到Spring当中有两种注解类型可以实现
1、五大类注解Controller、Service、Repository、Component、Configuration控制器服务存储组建配置
2、方法注解Bean下节介绍 Controller控制器归属业务逻辑层用来控制用户行为用来检查用户参数的有效性前端的请求合理性负责 Service服务归属服务层调用持久化类实现相应的功能对前端请求的合理性负责【不直接和数据库交互的类似于控制中心】 Repository仓库归属持久层是直接和数据库进行交互的通常每一个表都会对应一个仓库类对数据库的某一个表负责Repository Configuration配置归属配置层是用来配置当前项目的信息的项目全局配置负责 Component组件归属于公共工具类提供某些公共的方法
2、五大类注解的关系
首先查看一下Controller的定义首先在IDEA中敲一个Controller使用Command 左键查看定义
Target({ElementType.TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Component
public interface Controller {AliasFor(annotation Component.class)String value() default ;
}可以发现Controller注解继承了Component注解查看其他非Component的剩下三大类注解发现它们都继承了Component注解所以我们可以认为Component注解是其他四大类注解的父类
3、通过注解获取对象 1、使用注解向spring注入ArticleController package com.demo.componect;
import org.springframework.stereotype.Controller;Controller
public class ArticleController {public String sayHello() {return Hello Article Controller;}
} 2、获取ArticleController对象 public class App {public static void main(String[] args) {// 获取上下文ApplicationContext context newClassPathXmlApplicationContext(spring-config.xml);// 从Spring汇总获取Bean对象ArticleController articleController context.getBean(articleController, ArticleController.class);System.out.println(articleController.sayHello());}
}规则获取注解注入对象的名称需要将类名第一个字母小写
问题 一、如果类名首字母小写,如何从Spring中会去Bean和首字母大写一样直接将类名首字母小写来获取对象 二、如果首字母和第二个字母都是大写会怎么样 当使用默认规则首字母小写获取Bean对象,失败 使用原类名获取Bean对象 成功 三、项目中没有目录,全部写在java根目录下? spring-config.xml base-package ** 通配符匹配
结论当使用5大类注解时默认情况下获取Bean对象只需要将类名首字母小写即可。当然Bean对象首字母和第二个字母都是大写时此时需要原类名才能正确的获取到Bean对象
4、获取Bean对象名规则解析
Spring获取Bean对象的规则是如何实现的我们需要通过阅读Spring源码进行理解
1、shift shift 全局搜索
2、搜索BeanName进行筛选查看找到AnnotationBeanNameGenerator注解 Bean 名称生成 3、使用Structure查看类方法找到公有函数generateBeanName,然后一层层的查找 4、找到最终结果decapitalize()函数
若名称为空字符串或Null则直接返回若名称大于两个字符并且第二个字母大写第一个字母也大写则直接返回名称否则将名称的第一个字符小写后返回
public static String decapitalize(String name) {if (name null || name.length() 0) {return name;}// 首字母和次字母大写则返回原名称if (name.length() 1 Character.isUpperCase(name.charAt(1)) Character.isUpperCase(name.charAt(0))){return name;}// 首字母小写返回char chars[] name.toCharArray();chars[0] Character.toLowerCase(chars[0]);return new String(chars);}