首页
学习
活动
专区
圈层
工具
发布

照虎画猫写自己的Spring——自定义注解

基于XML配置文件方式的依赖注入一直是使用依赖注入的标配。使用配置文件让开发变的更加灵活,告别了硬编码和扩展性差的问题。...Spring也是如此的敏锐和贴心,给我们带了很多的注解,好比我们每天都要用的@Autowired,这样我们不再需要在XML配置文件中在合适的位置小心翼翼的配置注册你的Bean了。...Bean的属性和getter setter方法和上篇一致 得到setter方法,通过setter.isAnnotationPresent(JackieAutowired.class)判断该方法上是否有注解...Bean 通过反射的方式注入实例化后的Bean,完成依赖注入 添加JackieAutowired注解 这时候只需要在FairyServiceImpl类中的setFairyDao方法上加上注解JackieAutowired...注解后,读取其name属性,如果有值,则进入上下文map中查找相应的bean实例 如果没有配置name属性,则通过属性的名称进入上下文map中根据名称和类型进行遍历,找到相应的bean实例 * 通过反射的方式注入实例化后的

1.1K90

照虎画猫写自己的Spring——依赖注入

前言 上篇《照虎画猫写自己的Spring》从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为Fairy能够识别的类...初始化类,提供配置文件中声明的类的实例 一句话概括:不借助Spring容器,实现了Bean的加载和实例化 要想契合Fairy取名时的初衷(东西不大,但是能量无穷),只有一套加载Bean的机制是远远不够的...将FairyDao作为成员变量,添加setter和getter方法(后续做注入使用) 添加FairyService自己的实现方法lighting,这是一个会发光的小精灵的feature,小精灵的发光属性取决于...lightColor,这个属性需要注入,所以也有相应的setter和getter方法 升级解析器类 上篇的XmlReaderUtil解析器只能解析这样的配置结构 ...各个属性的setter和getter方法 使用了反射调用setter方法,将其注入FairyService类中 测试 编写测试代码 /** * bean依赖注入 */ FairyApplicationContext

70680
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Lombok 使用详解,简化Java编程

    Bean 的成员变量添加 get() ,set() 等方法,这些相对固定但又不得不编写的代码浪费程序员很多精力,同时让类内容看着更杂乱,我们希望将有限的精力关注在更重要的地方。...等) @Getter和@Setter 该注解可应用在类或成员变量之上,和我们预想的一样,@Getter 和 @Setter 就是为成员变量自动生成 get 和 set 方法,默认生成访问权限为 public...属性在重写的方法中使用父类的字段,这样我们可以更灵活的定义bean的比对,如下图: 查看编译后的Employee.class文件,如下图: @NonNull 该注解需应用在方法或构造器的参数上或属性上..., @EqualsAndHashCode, @Getter / @Setter 和 @RequiredArgsConstructor合力的体现,如下图: @Builder 函数式编程或者说流式的操作越来越流行...编译后的Employee.class文件如下: 妈妈再也不用担心我 set 值那么麻烦了,流式操作搞定: @Log 该注解需要应用到类上,在编写服务层,需要添加一些日志,以便定位问题,我们通常会定义一个静态常量

    63910

    Lombok 使用详解,简化Java编程

    Bean 的成员变量添加 get() ,set() 等方法,这些相对固定但又不得不编写的代码浪费程序员很多精力,同时让类内容看着更杂乱,我们希望将有限的精力关注在更重要的地方。...在Repositories中搜索Lombok,安装后重启IDE即可 ? 在Maven或Gradle工程中添加依赖 ? 至此我们就可以应用 Lombok 提供的注解干些事情了。...@Getter和@Setter 该注解可应用在类或成员变量之上,和我们预想的一样,@Getter 和 @Setter 就是为成员变量自动生成 get 和 set 方法,默认生成访问权限为 public...的属性,同样该注解也可以通过 exclude 属性排除某些字段,of 属性指定某些字段,也可以通过 callSuper 属性在重写的方法中使用父类的字段,这样我们可以更灵活的定义bean的比对,如下图:..., @EqualsAndHashCode, @Getter / @Setter 和 @RequiredArgsConstructor合力的体现,如下图: ?

    72020

    GPT提效Java程序员,从这里开始!

    Java Bean对象定义如下: public class Person { private String name; private int age; // getter和setter...字段类型为Object,具体的类型会根据实际情况变化,因此需要在程序中根据实际需要进行类型转换。...我们创建了一个名为 User 的Java Bean对象,该对象具有与表中列对应的成员变量,以及相应的 getter 和 setter 方法。...需要注意的是,根据具体需求,您可能还需要在Java Bean对象中添加其他方法或属性,如 toString() 方法、equals() 和 hashCode() 方法等。...这些方法可以根据实际需要进行添加和实现。 此外,您还可以根据命名规范和项目约定进行调整,如使用注解来指定字段和表的映射关系,添加数据校验注解等。

    42210

    JAVA开发常用框架注解与作用

    @Bean注解在方法上,声明当前方法的返回值为一个bean。 @ComponentScan用于对Component进行扫描->自定义路径。...Class生命周期相关 @PostConstruct由JSR-250提供,在类的构造函数执行完之后执行,等价于xml配置文件中bean的initMethod。...Lombok @Getter、@Setter ->自动产生 getter/setter。 @ToString->自动重写 toString() 方法,会印出所有变量。...注意,虽然只要加上 @Builder 注解,我们就能够用流式写法快速设定对象的值,但是 setter 还是必须要写不能省略的,因为 Spring 或是其他框架有很多地方都会用到对象的 getter/setter...@PreAuthorize : 进入方法前的权限验证,同时也支持表达式的访问控制 要想使用该注解需要在@EnableGlobalMethodSecurity注解上添加 prePostEnabled =

    70940

    微服务架构之Spring Boot(二十六)

    如果为单个文档指定了否定和非否定的配置文件,则至少一个 非否定的配置文件必须匹配,并且没有否定的配置文件可以匹配。...getter和setter通常是必需的,因为绑定是通过标准的Java Beans属性描述符,就像在Spring MVC中一样。...在后一种情况下,必须使用setter。我们 建议始终为此类型添加setter。如果初始化集合,请确保它不是不可变的(如上例所示)。...如果初始化嵌套的POJO属性(如前面示例中的 Security 字段),则不需要setter。如果您希望绑定器通过使用其默认构造函 数动态创建实例,则需要一个setter。...有些人使用Project Lombok自动添加getter和setter。确保Lombok不为此类型生成任何特定构造函数,因为容器会自动使用它来 实例化对象。

    65920

    SpringBoot(四)SpringBoot中lombok使用

    lombok概述 lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写...lombok的注解介绍 @NonNull : 让你不在担忧并且爱上NullPointerException @CleanUp : 自动资源管理:不用再在finally中添加资源的close方法...@Setter/@Getter : 自动生成set和get方法 @ToString : 自动生成toString方法 @EqualsAndHashcode : 从对象的字段中生成hashCode...这里重复了大量的 @Getter 和 @Setter 注解。 如果你只是需要在Class中仅暴露几个字段,那么使用它们非常方便,但如果您需要为所有字段生成访问器,则会变得烦人又无聊。....也就是@Data 我们在定义类的时候 只需要加一个 @Data 注解,其他的注解我们都不需要在添加就可以达到前面所说的所有功能。

    1.4K90

    【Java】已解决:`java.beans.IntrospectionException`

    Java Bean是一种特殊的Java类,其属性必须遵循特定的命名规则,并且通常需要提供公共的无参构造函数和getter/setter方法。...Bean属性必须有公共的getter和setter方法,否则反射机制在获取Bean信息时会抛出IntrospectionException。...方法命名不符合规范:getter和setter方法的命名必须符合Java Bean的命名规范(如getPropertyName和setPropertyName),否则在反射过程中会引发异常。...age属性的getter方法命名为fetchAge,不符合Java Bean规范的getAge()命名规则,因此在反射过程中也会引发异常。...测试反射操作:在项目中使用反射机制时,尽量增加单元测试,验证Java Bean类是否符合规范,以便及早发现和修复问题。

    20100

    SpringBoot遗忘知识点整理

    不能自动插入当前时间 这个问题其实跟数据库是否设置not null没有关系,而是要确保insert语句中没有该字段(mybatis),或者实体bean中不包含该字段(tkmybatis) 如果实体bean...只要在你准备添加的临时属性上添加这个注解,然后getter和setter自动完成一下,就可以啦。...// 表示使用配置文件中前缀为user1的属性的值初始化该bean定义产生的的bean实例的同名属性 // 在使用时这个定义产生的bean时,其属性name会是Tom @ConfigurationProperties...场景二 使用@ConfigurationProperties和@Bean注解在配置类的Bean定义方法上。...@Configuration注解的配置类中通过@Bean注解在某个方法上将方法返回的对象定义为一个Bean,并使用配置文件中相应的属性初始化该Bean的属性。

    51510

    Lombok插件的安装以及使用

    例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量...而使用 Lombok 插件后,就不需要在代码里面写getter/setter/toString/HashCode等等方法,将会在编译后的class文件中自动添加,使代码看起来更简洁些。...4.小结 Lombox: 就是一个工具, 简化java代码开发 Lombok环境 添加坐标 添加插件 Lombok的常用注解 1.目标 掌握Lombox的常用注解 2.路径 @Data @Getter/...package com.bean; import lombok.Data; /** * * Data注解: * 可以添加get、set、toString、equals、hashcode等等方法...3.2@Getter/@Setter 如果觉得@Data太过粗暴不够精细,可以使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法. 3.2.1

    1.4K10

    SpringBoot自定义starter及自动配置

    自定义starter条件 自动化配置需满足以下条件: 根据条件检查classpath下对应的类,也就是说需要提供对应可检查的类; 当满足条件时能够生成定义的Bean,并注册到容器中去; 能够自动配置项目所需要的配置...*/ private String accessKeySecret; // 其他参数定义 // 省略getter/setter方法 } 通过@ConfigurationProperties...对象中; msgService方法上的注解,@Bean表明该方法实例化的对象会被加载到容器当中;@ConditionalOnMissingBean指明当容器中不存在MsgService的对象时再进行实例化...添加spring.factories 当所有的基础代码和自动配置类都准备完成,就需要对其进行注册。也就是我们熟悉的META-INF/spring.factories配置文件了。...当然,这个需要在自己的项目中进行创建。

    1.5K20

    第二十九章:基于SpringBoot平台使用Lombok来优雅的编码

    ,所以添加的依赖也比较少,pom.xml配置文件如下所示: Getter/Setter Getter/Setter注解作用域可以是实体类也可以是具体的属性字段,下面我们仅仅对name属性添加注解,代码如下所示: //...省略 //名称...注意:如果你的属性Getter/Setter需要做特殊处理,那么直接使用原始方法实现即可,Lombok检查到存在自定义的方法后不会再做生成处理。...ToString 除了上述的Getter/SetterLombok还为我们提供了自动生成toString方法的注解@ToString,该注解的作用域仅仅是在实体类上,我们修改实体类添加该注解,在测试类中调用...、@Setter三个注解注释掉后添加@Data,按照官方所说这时我们的测试类应该不会出现任何的异常,我们打开测试类查看是否正常。

    65320

    超级全面的SpringBoot注解介绍,每一个注解都深入骨髓!!

    SpringBoot实体类中的注解 2.1 lombok中的注解 2.1.1 @Getter/@Setter @Getter/@Setter : 注解在类上, 为类提供读写属性。...他的用法和上面的@Log4一样。 2.1.13 @Accessors @Accessors : Accessor的中文含义是存取器。这个注解是针对实体类中的 getter与setter方法而言的。...包含的属性: fluent属性:参数值为true/false 默认为false,当设置为true时,表示生成的setter和getter方法没有前缀set和get,且setter方法返回的是当前对象。...所以此时可以连续调用setter() Person.setName("张三").setAge(20); 复制代码 prefix属性:参数为String类型 可以指定前缀,生成getter和setter...配置文件中的,作用为:配置spring容器(应用上下文) @Bean注解就是声明其中的标签 @Configuation等价于 @Bean等价于 举例说明:将指定的组件添加到SpringBoot

    6.5K64
    领券