- 浏览: 599155 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
Springboot的自动配置是SpringBoot的关键,主要是通过@Conditional这个注解来进行配置。
1.@Conditional
@Conditional这个注解指的是:满足某一个特定条件创建一个特定的Bean,也就是说根据特定条件来控制Bean的创建行为,就可以通过这个特性来进行一些自动配置。
比如根据不同的环境类型打印出来不同的信息
(1)类实现Condition接口,这个类也就是会作为@Conditional的值传入,作为一个判断条件,返回值为boolean
(2)业务类,用来做具体的处理
(3)配置类
(4)测试类
2.@Enable*
通过开启这种注解,能够开启一些特定类的支持,从而能够做到一些自动配置。主要是在@Enable的源码中发现有@Import导入,@Import就是用来导入配置类的,如@Import(SchedulingConfiguration.class)
3.@Controller
注解在类上,这种可以用于普通页面返回,如返回return “index”这种的情况需要在类上写@Controller,那么再该类中有需要ajax请求返回的时候,就需要单独再在方法的返回值前面或者直接再方法上写@ResponseBody,表明返回的不是一个页面,而是一个reponse体
@RestController:则集合了@Controller和@ResponseBody,如一个存放Ajax的类,如果要控制返回类型,可以在@RequestMaping(produces={“application/json;charset=UTF-8”}设置produces来定制返回值的媒体类型和字符集
4.@SpringBootApplication
关键是使用了@EnableAutoConfiguration,这个里面配置了@Import注解,引入了EnableAutoConfiguraionImportSelector,这个类中通过SpringFactoriesLoader.loadFactoryName方法来扫描具有META-INF/spring.factories文件的jar包,而spring-boot-autoconfig.jar中就有个一个这个文件,次文件中声明了有哪些配置
任何一个AutonConfiguration文件,一般都有如下的条件注解:
(1)@ConditionalOnBean:当容器里面有指定的Bean条件下
(2)@ConditionalOnClass:当类路径下有指定的类的条件下
(3)@ConditionalOnProperty:指定的属性是否有执行的值
(4)@ConditionalOnResource:类路径是否有指定的值
(5)@ConditionalOnWebApplication:当前项目是Web项目的条件下
(6)@ConditionalOnMissingBean:当容器里没有指定Bean的情况下
转自:https://blog.csdn.net/uestc_lxp/article/details/52993133
1.@Conditional
@Conditional这个注解指的是:满足某一个特定条件创建一个特定的Bean,也就是说根据特定条件来控制Bean的创建行为,就可以通过这个特性来进行一些自动配置。
比如根据不同的环境类型打印出来不同的信息
(1)类实现Condition接口,这个类也就是会作为@Conditional的值传入,作为一个判断条件,返回值为boolean
public class WindowsCondition implements Condition { //implements method public boolean matches(ConditionContextcontext,AnnotatedTypeMetadata metadata) { return context.getEnvironment().getPropertity("os.name").contains("Windows"); } }
(2)业务类,用来做具体的处理
public class WindowsListService implements ListService { public String showCmd() { return "windows"; } }
(3)配置类
@Configuration public class ConditionConfig { @Bean @Conditional(WindowsCondition.class) public ListService windowListService() { return new WindowsListService(); } }
(4)测试类
public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConditionConfig.class); ListService listService = context.getBean(ListService.class); System.out.print(listService.showCmd()); } }
2.@Enable*
通过开启这种注解,能够开启一些特定类的支持,从而能够做到一些自动配置。主要是在@Enable的源码中发现有@Import导入,@Import就是用来导入配置类的,如@Import(SchedulingConfiguration.class)
3.@Controller
注解在类上,这种可以用于普通页面返回,如返回return “index”这种的情况需要在类上写@Controller,那么再该类中有需要ajax请求返回的时候,就需要单独再在方法的返回值前面或者直接再方法上写@ResponseBody,表明返回的不是一个页面,而是一个reponse体
@RestController:则集合了@Controller和@ResponseBody,如一个存放Ajax的类,如果要控制返回类型,可以在@RequestMaping(produces={“application/json;charset=UTF-8”}设置produces来定制返回值的媒体类型和字符集
4.@SpringBootApplication
关键是使用了@EnableAutoConfiguration,这个里面配置了@Import注解,引入了EnableAutoConfiguraionImportSelector,这个类中通过SpringFactoriesLoader.loadFactoryName方法来扫描具有META-INF/spring.factories文件的jar包,而spring-boot-autoconfig.jar中就有个一个这个文件,次文件中声明了有哪些配置
任何一个AutonConfiguration文件,一般都有如下的条件注解:
(1)@ConditionalOnBean:当容器里面有指定的Bean条件下
(2)@ConditionalOnClass:当类路径下有指定的类的条件下
(3)@ConditionalOnProperty:指定的属性是否有执行的值
(4)@ConditionalOnResource:类路径是否有指定的值
(5)@ConditionalOnWebApplication:当前项目是Web项目的条件下
(6)@ConditionalOnMissingBean:当容器里没有指定Bean的情况下
转自:https://blog.csdn.net/uestc_lxp/article/details/52993133
发表评论
文章已被作者锁定,不允许评论。
-
spring boot集成jsp
2018-11-21 16:53 7351.配置文件 server: port: 8080 ... -
Spring BeanFactoryPostProcessor和BeanPostProcessor的区别
2018-11-14 15:40 705链接:https://blog.csdn.net/caihai ... -
spring BeanPostProcessor理解
2018-11-14 11:31 320链接:https://blog.csdn.net/ginkgo ... -
Spring 源码解析之Initializer
2018-11-14 11:27 455链接:https://blog.csdn.net/ktlife ... -
spring boot AnnotationConfigApplicationContext的实例化过程
2018-11-10 14:18 1122链接:https://blog.csdn.net/chr1sg ... -
spring transaction同一个类不回滚解决方法
2018-10-11 10:59 7711.修改配置文件 <aop:aspectj-autopr ... -
Spring @Transaction学习
2018-10-08 10:36 2921.考虑有下面这么一个类 public class Foo ... -
spring mvc i18n国际化学习(spring:message)
2018-06-09 09:35 639spring.xml文件中配置: <!-- 存储区域 ... -
Spring Boot Oauth2.0授权服务器
2018-05-11 14:19 1650什么是OAuth? OAuth(Open Authoriza ... -
Spring Boot @Import注解(将指定类实例注入到IOC容器中)
2018-05-09 10:20 1595SpringBoot 的 @Import 用于将指定的类实例注 ... -
Spring Boot @Conditional注解
2018-05-09 10:15 1815Spring Boot的强大之处在于使用了Spring 4框架 ... -
Spring Boot自定义starter pom实例(/META-INFO/spring.factory文件)
2018-05-09 09:48 1138自定义starter pom 自己实现一个简单的例子,当某个类 ... -
Spring Boot优缺点总结
2018-04-16 10:25 1535优点: 1.去除了大量的xml配置文件 2.简化 ... -
SpringBoot JPA @Transaction 知识学习
2018-03-16 09:09 759一、事务相关概念 1、事务的特点 原子性:事务是一个原子操 ... -
Sprint @Query注解的用法(nativeQuery=true/false)(Spring Data JPA)
2018-03-15 16:33 38371. 一个使用@Query注解的简单例子 @Query(val ... -
Spring Boot JpaRepository知识学习(Spring Data JPA)
2018-03-14 11:17 18001.Spring Data所解决的问题 Spring Dat ... -
SpringCloud Hystrix知识学习(防止雪崩效应)
2018-03-13 14:57 929一、Hystrix说明 1.服务雪崩效应:是一种因服务提供者的 ... -
SpringCloud @LoadBalanced注解学习
2018-03-13 09:48 2221当时我们说开启负载均衡很简单,只需要在RestTemplate ... -
Spring Boot配置方式(java配置和注解配置)
2018-03-12 15:09 1109Java配置 从Spring 3.x开始,Spring提供了J ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1621REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ...
相关推荐
这个注解是Spring Boot的一个核心功能,使得我们可以根据环境、配置或其他自定义逻辑来决定哪些bean应该被创建。 `@Conditional`注解通常与`@Configuration`或`@Bean`注解一起使用。它的主要作用是基于某些条件来...
Spring Boot的自动装配原理涉及到Spring Boot的核心特性,它简化了基于Spring的应用开发,通过自动配置减少了大量的配置工作。 在Spring Boot中,自动装配主要依赖于一系列的Starters。这些Starters为常用的依赖...
这是因为`spring-boot-starter-data-redis`模块包含了自动配置类,这些类会根据配置条件创建并管理`RedisTemplate`。 此外,`@Import`注解还可以配合`ImportBeanDefinitionRegistrar`接口使用,它允许在运行时动态...
Spring Boot自动配置原理详解 Spring Boot的出现极大地简化了Java应用程序的开发流程,尤其是通过其自动配置特性,使得开发者无需繁琐的手动配置就能快速启动项目。自动配置是Spring Boot的核心功能之一,它允许...
自动配置是Spring Boot的一大亮点,它基于条件注解(Conditional Annotations)来自动配置你的应用。当你的类路径中有特定的jar包时,Spring Boot会尝试匹配并应用相应的配置。例如,如果检测到HSQLDB,且没有手动...
由于Spring 4之后引入的@Conditional等条件注解是Spring Boot自动配置的关键,但在3.x版本中这些特性并不可用。然而,仍然有方法可以实现类似的效果。 首先,我们需要理解核心的诉求。比如,希望为全站添加日志记录...
Spring Boot自发布以来,以其强大的自动配置能力、简洁的开发模式以及丰富的社区支持,迅速成为了Java开发者构建微服务架构的首选框架之一。Spring Boot不仅继承了Spring框架的所有优点,还在此基础上进行了大量的...
Spring Boot 的自动配置类通常会使用 `@Conditional` 注解,比如 `@ConditionalOnClass` 和 `@ConditionalOnBean`,这些注解用于判断类路径中是否存在某个类或某个 Bean,如果满足条件,则自动配置相应的 Bean。...
在实际开发中,你还需要确保XML配置中的bean与Spring Boot的自动配置不冲突,必要时可以使用`@Profile`或`@Conditional`注解来控制不同环境下的配置加载。 总结来说,Spring Boot虽然主要依赖Java和YAML配置,但...
总结,Spring Boot的自动装配和starter技术大大简化了Java应用的配置,通过`@Import`注解和自动配置机制,我们可以高效地管理Bean的生命周期。理解这些原理对于优化和调试Spring Boot应用至关重要。
Spring Boot的自动配置理念是基于“约定优于配置”,它能根据项目中的依赖自动配置Bean,极大地简化了Java应用的开发。下面我们将深入探讨Spring Boot自定义自动装配的相关知识点。 一、理解自动配置 1. **自动...
这意味着Spring Boot可以根据当前环境中可用的类和依赖项来自动配置Bean,大大减少了手动配置的需求。 通过以上对Spring和Spring Boot中关键注解的介绍,我们不难看出,这些注解的设计和使用极大地提高了开发效率,...
Spring Boot的自动配置功能是基于`@Conditional`注解实现的,当满足特定条件(如类存在、属性配置等)时,才会生效。如果需要禁用某个自动配置,可以在配置类上使用`@EnableAutoConfiguration(exclude = {...
这篇文章主要介绍了Spring Boot实现模块化的几种方法,包括使用@ComponentScan、@Bean和@Conditional注释来创建模块,并介绍了如何使用这些模块。 模块可以是业务模块,为应用程序提供一些业务服务,或者为几个其他...
### Spring Boot 入门...Spring Boot 的特性包括自动配置、约定优于配置、依赖管理等,使得它成为构建微服务架构的理想选择。结合 Spring Cloud 和 Docker 技术,Spring Boot 能够轻松地构建、部署和管理微服务应用。
此外,`resources/META-INF/spring.factories` 文件是 Spring Boot 自动配置的核心,它列出了所有自动配置类的全限定名,例如: ```properties org.springframework.boot.autoconfigure.EnableAutoConfiguration=\...
本文将深入探讨Spring Boot自动配置的工作原理以及如何通过条件Bean来实现自定义配置。 首先,Spring Boot自动配置的核心在于`@EnableAutoConfiguration`注解,它告诉Spring Boot去寻找并应用相应的自动配置类。...
自动配置是Spring Boot的一大特色,它通过`@EnableConfigurationProperties`和`@Conditional`注解来实现。创建一个Java类,例如`MyStarterAutoConfiguration`,并在其中定义配置属性,使用`@...
2. **@EnableAutoConfiguration**:开启自动配置,Spring Boot会根据类路径中的jar包来自动配置应用,无需手动配置大量bean。 3. **@RestController**:结合了@Controller和@ResponseBody,用于创建处理HTTP请求的...
Spring 3.2 是 Spring 框架的一个重要版本,它在之前的版本基础上引入了许多增强功能和优化。本文将深入探讨 Spring 3.2 ...同时,这也为学习更高级的 Spring 版本,如 Spring Boot 或 Spring Cloud 打下了坚实的基础。