「java自动装配的注解」自定义java注解
本篇文章给大家谈谈java自动装配的注解,以及自定义java注解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、通过注解实现自定义Spring Boot Starter自动装配
- 2、java和spring这种能够实现自动装配的注解有哪些
- 3、使用@Autowired注解实现根据类型实现自动装配
- 4、SpringBoot的自动装配(一)
- 5、java configurable什么用
通过注解实现自定义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自动装配的注解的信息别忘了在本站进行查找喔。
发布于:2022-11-30,除非注明,否则均为
原创文章,转载请注明出处。