`

Spring4.X之基于Java注解的配置(与SpringBoot的诞生)

    博客分类:
  • S2SH
阅读更多
最近项目用到了SpringBoot,对其没有xml配置就可以运行感到非常神奇。之前没有细细追究。

说到 SpringBoot,需要提一下:

一、Spring的历史版本与配置方式

1. Spring 1.x
完全是 xml 的配置。
缺点:随着项目的扩大,xml越来越多,而且需要对xml分类。

2. Spring 2.x
在 JDK 1.5 更新的时代,可以使用注解。Spring 2.X 开始使用注解。

那么问题是:使用xml?还是使用注解?
得出最佳实践:
应用的基本配置用xml,业务用注解。

3. Spring 3.x
推荐使用 java 代码的配置注解,取代 xml

@Configuration, @Bean

4. Spring 4.x

SpringBoot 诞生



二、Spring 4.x @Component 与 @Bean 的区别

https://stackoverflow.com/questions/10604298/spring-component-versus-bean

@Component 是加在类上;
@Bean 是加在方法上;而且可以手动指定生成哪个类的具体实例。


三、Spring 4.x @Resource 与 @Autowired 的区别

https://stackoverflow.com/questions/4093504/resource-vs-autowired

@Resource是 By Name 来匹配的,没有找到对应的名字时则调用 @Autowired。
名字可以用 @Resource(name="blah")属性指定,缺省则使用变量名。

@Autowired是 By Type 来匹配的。常与 @Autowired @Qualifier("blah") 结合使用。

依赖注入的第三种方式:
@Qualifier
@Retention(RUNTIME)
public @interface YourQualifier {}

@YourQualifier
@Component
public class SomeBean implements Foo { .. }

And then
@Inject @YourQualifier private Foo foo;



@RESOURCE VS @AUTOWIRED VS @INJECT

ANNOTATION PACKAGE SOURCE
@Resource javax.annotation Java
@Inject javax.inject Java
@Qualifier javax.inject Java
@Autowired org.springframework.bean.factory Spring



@Resource
@Qualifier("person")
private Party party;

@Autowired
@Qualifier("person")
private Party party;

@Inject
@Qualifier("person")
private Party party;



https://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/



四、Spring 4.x @PropertySources 与 @PropertySource

https://www.mkyong.com/spring/spring-propertysources-example/

Some enhancements on Spring 4.

- Introduces new @PropertySources to support Java 8 and better way to include multiple properties files.
	@Configuration
	@PropertySources({
		@PropertySource("classpath:config.properties"),
		@PropertySource("classpath:db.properties")
	})
	public class AppConfig {
		//...
	}

- Allow @PropertySource to ignore the not found properties file.
	@Configuration
	@PropertySource("classpath:missing.properties")
	public class AppConfig {
		//...
	}

If missing.properties is not found, the system is unable to start and throws FileNotFoundException

Caused by: java.io.FileNotFoundException:
class path resource [missiong.properties] cannot be opened because it does not exist

In Spring 4, you can use ignoreResourceNotFound to ignore the not found properties file

	@Configuration
	@PropertySource(value="classpath:missing.properties", ignoreResourceNotFound=true)
	public class AppConfig {
		//...
	}

@PropertySources({
    @PropertySource(value = "classpath:missing.properties", ignoreResourceNotFound=true),
    @PropertySource("classpath:config.properties")
})





-

分享到:
评论

相关推荐

    springboot课件 Spring的Java配置方式

    ### Spring Boot与Spring的Java配置方式详解 #### 一、Spring Boot项目结构及配置 **Spring Boot项目**的构建通常采用Maven或Gradle作为构建工具。为了方便开发者使用Spring Boot提供的特性,官方建议将Spring ...

    springboot快速入门

    Spring框架的发展经历了多个阶段,从Spring 1.x到Spring 4.x,逐渐从XML配置转向注解和Java配置。 1. **Spring 1.x时代**:在这个阶段,Spring主要依赖XML文件来配置Bean,随着项目规模的增长,XML配置文件变得庞大...

    springboot整合quartz定时任务yml文件配置方式

    Spring Boot与Quartz的结合提供了便捷的配置方式,特别是通过YAML(YAML Ain't Markup Language)配置文件,使得配置更加直观和灵活。以下将详细介绍如何在Spring Boot应用中使用YAML文件配置Quartz定时任务,以及...

    Springboot入门课件.pptx

    - SpringBoot通过条件注解实现自动化配置,无需XML配置,利用Spring 4.x的Java配置和注解配置组合。 2. **SpringBoot优点** - 快速构建项目,减少初始化工作。 - 项目可以独立运行,无需外部Servlet容器。 - ...

    springdemo.zip

    1. **配置简化**:Spring Boot通过大量的默认配置和starter POMs,使得开发者不再需要手动编写大量的XML配置文件,而是采用Java配置或者基于注解的配置。 2. **模块化**:Spring Boot鼓励模块化的应用设计,每个...

    SpringBoot入门.pptx

    - **SpringBoot** 是为了简化Spring应用程序的初始搭建以及开发过程而诞生的,它基于约定优于配置的原则,极大地减少了常规配置工作。 - **SpringCloud** 是一套微服务解决方案,它构建于SpringBoot之上,提供了...

    Spring boot总结.doc

    4. **自动配置**:Spring Boot 会根据类路径中的类自动配置相应的 Bean,如发现 `@SpringBootApplication` 注解,将自动配置 Spring MVC 等。 5. **应用监控**:通过 Actuator 模块,Spring Boot 提供了 HTTP、SSH ...

    塔罗科公司.zip

    D2ADADADMIN.D2ADADMIN.D2ADADADMIN.D2ADADMIN.D2ADADMIN.D2ADADMIN.D2ADADMIN.D2ADMIN.D2.D2.D2.SpringBoot2.0.5.5.release.release.release.release.releas2.release.releas1.sr1.sr1.sr1.spr春云finchley.sr1.sr1...

    详解SpringBoot2 使用Spring Session集群

    SpringBoot2 是一个流行的 Java 框架,用于构建基于 Web 的应用程序,而 Spring Session 是一个用于管理会话的框架。本文将详细介绍如何使用 Spring Session 在 SpringBoot2 中实现集群。 什么是 Spring Session ...

    SpringBoot整合WebSocket+nacos注册中心

    SpringBoot以其简洁的配置和强大的功能,已经成为Java领域开发Web应用的首选框架。而WebSocket作为HTML5提供的一种在单个TCP连接上进行全双工通信的协议,可以实现服务器与客户端的双向通信,极大地提高了实时性。...

    springboot_test.rar

    3.2 主启动类:作为应用的入口,一般会包含@SpringBootApplication注解,启动Spring Boot的自动配置和Spring MVC。 3.3 控制器:使用@RestController注解的类,处理HTTP请求,返回JSON或其他类型的数据。 3.4 ...

    springmvc迁移springboot 之路-哲学篇一

    * 零配置:Spring4.x 出现之后提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置,所有的注入都依赖与条件注解的原理进行注入,这是 Spring4.x 出现之后的新特性。...

    基于springboot的校园资料分享平台源码数据库.zip

    在当今信息化社会,教育领域的资源共享愈发重要,基于SpringBoot的校园资料分享平台正是为了解决这一需求而诞生的。本平台利用先进的Java技术和SpringBoot框架,构建了一个高效、便捷的资料分享系统,旨在提升教育...

    springboot

    Spring 框架自诞生以来一直是 Java 领域中最为流行的框架之一,它提供了完整的轻量级企业应用解决方案。随着云计算和微服务架构的发展,Spring 官方团队为了适应新时代的需求,推出了 SpringBoot 这一全新的框架。 ...

    Springboot基础.pdf

    SpringBoot 是一个基于 Spring 框架的轻量级开发工具,它的主要目的是为了简化 Java 应用程序的初始设置和配置过程。Spring 框架最初设计的初衷是为了应对企业级应用开发的复杂性,它引入了依赖注入(IoC)和面向切...

    springboot模板

    总的来说,SpringBoot通过自动化配置、起步依赖和内嵌服务器等特性,为开发者提供了高效、简洁的Spring应用开发环境,降低了入门门槛,提高了开发效率,是现代Java企业级应用开发的首选框架之一。

    spring boot入门ppt和代码

    它的核心特性是可以自动配置 Spring 框架,使得开发者能够快速地创建独立运行的、生产级别的基于 Spring 的应用程序。在本资料中,包含了一个PPT讲解和一份入门代码,帮助初学者快速理解并上手 Spring Boot。 首先...

    SpringBoot 从入门到进阶系列官方小册.rar

    3. **自动配置**:SpringBoot的核心特性之一,讲解如何利用@ConfigurationProperties、@EnableAutoConfiguration等注解实现零配置或者最少配置。 4. **内嵌Servlet容器**:详述SpringBoot如何内置Tomcat、Jetty等...

    SpringBoot基础_spingboot基础_

    SpringBoot基础是Java开发中的一个热门话题,它简化了基于Spring的应用程序的创建和配置过程。SpringBoot的核心理念是“约定优于配置”,旨在提供一种快速、便捷的方式来构建生产级别的Java应用。下面我们将深入探讨...

Global site tag (gtag.js) - Google Analytics