springboot和spirng配置bean的方式以及区别

Spring和SpringBoot配置bean的方式以及区别

  • spring配置bean
    • 1、XML配置
    • 2、 注解配置
    • 3、Java配置
  • SpringBoot配置bean
    • 1、自动扫描
    • 2、条件注解
    • 3、配置类
    • 4、属性配置
  • 区别
    • 1、SpringBoot的自动扫描范围可以在主程序类的@SpringBootApplication注解中配置
    • 2、@Value注入属性

spring配置bean

1、XML配置

使用XML文件来定义和配置bean。在XML文件中,您可以使用元素来定义bean的属性、依赖关系和其他配置信息。您需要在应用程序的配置文件中引入XML配置文件,并使用Spring容器加载和管理这些bean。

示例:


<bean id="myBean" class="com.example.MyBean">
   <property name="propertyName" value="propertyValue" />
bean>

2、 注解配置

使用注解来标记和配置bean。通过在类或方法上添加特定的注解,Spring将自动扫描并创建相应的bean。常用的注解包括@Component@Service@Repository@Controller等,用于不同的组件类型。
注解扫描需要在Spring的xml配置文件中提供相应的扫描配置

示例:

@Component
public class MyBean {
   // 类定义
}

其中@Component表示控制层组件
@Service表示服务层组件
@Repository表示持久层组件
@Component用在层级模糊的组件上

3、Java配置

使用Java代码来配置bean。可以创建一个配置类,使用Spring提供的配置注解来定义bean和其属性,然后通过加载该配置类来创建和管理bean。

示例:

@Configuration
public class AppConfig {
   @Bean
   public MyBean myBean() {
      MyBean bean = new MyBean();
      // 设置bean的属性
      return bean;
   }
}

以上三种为Spring常用的bean配置,Spring框架会管理bean的创建和注入的依赖关系。

SpringBoot配置bean

在Spring Boot中,配置bean的方式可以更加简化和自动化。Spring Boot提供了一种基于约定的自动配置机制,使得配置bean变得更加方便和快速。以下是一些在Spring Boot中配置bean的方式:

1、自动扫描

Spring Boot会自动扫描并加载位于主应用程序类所在包及其子包下的组件,无需额外配置。可以使用@Component@Service@Repository@Controller等注解来标记组件,Spring Boot将会自动创建和管理这些bean。

示例:

@Component
public class MyBean {
   // 类定义
}

2、条件注解

Spring Boot提供了一系列条件注解,例如@ConditionalOnClass@ConditionalOnProperty等,可以根据特定的条件来创建bean。这些条件注解允许我们根据应用程序的配置或类路径上的存在与否来决定是否创建bean。

示例:

@Configuration
@ConditionalOnClass(DataSource.class)
public class DataSourceConfig {
   // 创建数据源bean的配置
}

3、配置类

创建一个配置类,并使用@Configuration注解标记它。在配置类中,使用@Bean注解来定义bean的创建逻辑和属性。

示例:

@Configuration
public class AppConfig {
   @Bean
   public MyBean myBean() {
      MyBean bean = new MyBean();
      // 设置bean的属性
      return bean;
   }
}

4、属性配置

Spring Boot允许使用属性文件(如application.properties或application.yml)来配置bean的属性。通过在属性文件中指定bean的属性值,Spring Boot会自动将这些属性值注入到相应的bean中。

示例(在application.properties中):

mybean.propertyName=propertyValue
@Component
public class MyBean {
   @Value("${mybean.propertyName}")
   private String propertyName;
}

区别

SpringBoot相对于Spring的区别首先就是SpringBoot极大的简化了Spring使用xml或者配置类来配置IOC容器的操作,下面是他们的主要区别:

1、SpringBoot的自动扫描范围可以在主程序类的@SpringBootApplication注解中配置

相较于Spring配置IOC容器时手动配置自动扫描的方式,SpringBoot在@SpringBootApplication注解中组合了@ComponentScan注解,默认扫描同包下的配置类注解。扫描范围可以手动更改。

2、@Value注入属性

SpringBoot可以使用@Value注解将application中的配置自动注入到相对应的bean当中。

你可能感兴趣的:(spring,boot,spring,java)