「java自动装配的注解」自定义java注解

博主:adminadmin 2022-11-30 09:45:07 69

本篇文章给大家谈谈java自动装配的注解,以及自定义java注解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

通过注解实现自定义Spring Boot Starter自动装配

以Spring boot 作为微服务开发的项目中会用到很多第三方,或者自建的一些依赖SDK,例如 分布式锁、文件管理、数据库连接、统一错误拦截等组件。为了达到通用的目的,都会创建自定义的spring boot stater 组件。以下介绍创建步骤:

一、创建Maven测试项目test-starter pom文件如下:

二、创建自动装配类TestServiceConfiguration.java

三、创建配置类TestServiceProperties.java

四、创建提供服务的接口TestService.java

五、创建TestService的实现类型TestServiceImpl.java

六、创建自定义注解@EnableTest

通过以上步骤就实现了自定义Spring boot starter test-spring-boot-starter 组件,下面创建测试项目去调用这个starter组件。

创建starter组件使用项目

一、创建maven测试项目test-service,pom文件如下

二、创建启动类Application.java

三、创建配置文件application.yml

四、创建测试类TestController.java

到这里整个自定义spring boot starter 创建就完成了,同时也依赖到项目中进行使用了。

项目代码:starter-test: 自定义starter组件

java和spring这种能够实现自动装配的注解有哪些

Java是能够通过里面的软件,然后进行实现自动装配的注解的,所以的话也可以通过这个然后再去显示就可以了。

使用@Autowired注解实现根据类型实现自动装配

①需求

Controller组件中往往需要用到Service组件的实例,Service组件中往往需要用到Repository组件的实例。Spring可以通过注解的方式帮我们实现属性的装配。

②实现依据

在指定要扫描的包时,context:component-scan 元素会自动注册一个bean的后置处理器:AutowiredAnnotationBeanPostProcessor的实例。该后置处理器可以自动装配标记了 @Autowired 、@Resource或@Inject注解的属性。

③@Autowired注解

[1]根据类型实现自动装配。

[2]构造器、普通字段(即使是非public)、一切具有参数的方法都可以应用@Autowired注解

[3]默认情况下,所有使用@Autowired注解的属性都需要被设置。当Spring找不到匹配的bean装配属性时,会抛出异常。

[4]若某一属性允许不被设置,可以设置@Autowired注解的required属性为 false

[5]默认情况下,当IOC容器里存在多个类型兼容的bean时,Spring会尝试匹配bean的id值是否与变量名相同,如果相同则进行装配。如果bean的id值不相同,通过类型的自动装配将无法工作。此时可以在@Qualifier注解里提供bean的名称。Spring甚至允许在方法的形参上标注@Qualifiter注解以指定注入bean的名称。

[6]@Autowired注解也可以应用在数组类型的属性上,此时Spring将会把所有匹配的bean进行自动装配。

[7]@Autowired注解也可以应用在集合属性上,此时Spring读取该集合的类型信息,然后自动装配所有与之兼容的bean。

[8]@Autowired注解用在java.util.Map上时,若该Map的键值为String,那么 Spring将自动装配与值类型兼容的bean作为值,并以bean的id值作为键。

④@Resource

@Resource注解要求提供一个bean名称的属性,若该属性为空,则自动采用标注处的变量或方法名作为bean的名称。

⑤@Inject

@Inject和@Autowired注解一样也是按类型注入匹配的bean,但没有reqired属性。

SpringBoot的自动装配(一)

一、什么是SpringBoot的自动装配

    SpringBoot的自动装配是指:SpringBoot会自动将一些配置类的bean注册到ioc容器,我们可以在需要的地方使用@Autowired或@Resource等注解来使用它。

    自动的表现形式就是我们只需要引我们享用功能的包,其他的配置完全不需要管,springboot会自动注入这些配置备案,我们直接使用就行。

    自动装配也是SpringBoot的一个重要的特点,他帮我们做了很多的配置。

二、它是怎样实现的?

    1、run方法

        当启动一个SpringBoot项目时,本质上就是执行了地洞累中的主方法,然后执行了run方法。

    ConfigurableApplicationContext这个对象就是 ApplicationContext接口的一个子接口。

    其实SpringBoot项目的启动,本质上就是一个Spring的初始化操作。

2、@SpringBootApplication

    点开这个注解可以发现,这是一个组合注解,包括:

        这些注解中,前四个是JDK中的自动元注解,是用来修饰注解的注解。@ComponentScan是用来扫描路径的,如果不置顶特定的扫描路径的话,扫描的路径是当前修饰的类所在的包及其子包。而@SpringBootConfiguration这个注解的本质就是@Configuration注解。所以在这里面跟SpringBoot自动装配有关系的就只有一个了:@EnableAutoConfiguration

    3、@EnableAutoConfiguration

    @AutoConfigurationPackage不是用来实现自动装配的,在Spring中,他是用来扫描实体类Entity等注解的。所以重点是在@Import上。

    @Import注解实现了AutoConfigurationImportSelector类,自动装配也是在这个类中进行了具体的实现。自动装配实现的就是该类中的selectImports方法里。通过selectImports方法,取到spring.factories文件下的一系列类名,随后将这些类自动加载至IOC容器中。

    4、总结

        SpringBoot的自动装配也就是通过@EnableAutoConfiguration注解,加载AutoConfigurationImportSelector类中的selectImports方法,进而扫描spring.factories文件下的自动配置类,并将其装配到IOC容器的过程。

java configurable什么用

@configurable注解实现AnnotationBeanWiringInfoResolver

设置 @Configurable 注解中的autowire属性就可以让Spring来自动装配了: @Configurable(autowire=Autowire.BY_TYPE) 或者 @Configurable(autowire=Autowire.BY_NAME,这样就可以按类型或者按名字自动装配了。 AnnotationBeanWiringInfoResolver 继承自BeanWiringInfoResolver

BeanWiringInfoResolver使用configurable注解来查找哪些类需要自

实现了BeanWiringInfoResolver的resolveWiringInfo方法

java自动装配的注解的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于自定义java注解、java自动装配的注解的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。