SpringBoot两种配置文件和三种Bean配置方式

SpringBoot两种配置文件

application.properties,
application.yml

application.properties 配置:
    spring.profiles.active=dev
    spring.datasource.data-username=root
    spring.datasource.data-password=root
    
application.yml 配置
    spring:
      profiles:
        active: prod
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/test
        username: root
        password: root
  1. yml 文件在写的时候层次感强,而且少写了代码。所以现在很多人都使用yml配置文件。

  2. 在项目中配置多套环境的配置方法。因为现在一个项目有好多环境,开发环境,测试环境,准生产环境,生产环境,每个环境的参数不同,所以我们就可以把每个环境的参数配置到yml文件中,这样在想用哪个环境的时候只需要在主配置文件中将用的配置文件写上就行如下:

spring:
	profiles:
		active: prod

这行配置在application.yml 文件中,意思是当前起作用的配置文件是application_prod.yml,其他的配置文件命名为 application_dev.yml,application_bat.yml等。

三种Bean配置方式

基于XML的配置、基于注解的配置和基于Java类的配置。

  • 基于XML的配置
<bean id=“loginUserDao” class=“com.chinalife.dao.impl.LoginUserDaoImpl”  
        lazy-init=“true” init-method=“myInit” destroy-method=“myDestroy”  
        scope=“prototype”>  
        ……   
</bean>

在XML配置中,通过 来定义Bean,通过id或name属性定义Bean的名称,如果未指定id和name属性,Spring则自动将全限定类名作为Bean的名称。通过子元素或者p命名空间的动态属性为Bean注入值。还可以通过的init-method和destory-method属性指定Bean实现类的方法名来设置生命过程方法(最多指定一个初始化方法和销毁方法)。通过的scope指定Bean的作用范围。听过的lazy-init属性指定是否延迟初始化。

当Bean的实现类来源于第三方类库,比如DataSource、HibernateTemplate等,无法在类中标注注解信息,只能通过XML进行配置;而且命名空间的配置,比如aop、context等,也只能采用基于XML的配置。

  • 基于注解的配置
@Scope(“prototype”)   
@Lazy(true)   
@Component(“loginUserDao”)   
public class LoginUserDao {   
    ……   
    // 用于设置初始化方法   
    @PostConstruct  
    public void myInit() {   
  
    }   
  
    // 用于设置销毁方法   
    @PreDestroy  
    public void myDestroy() {   
    }   
}  

在Bean实现类中通过一些Annotation来标注Bean类:

·@Component:标注一个普通的Spring Bean类(可以指定Bean名称,未指定时默认为小写字母开头的类名)

·@Controller:标注一个控制器类

·@Service:标注一个业务逻辑类

·@Repository:标注一个DAO类

通过在成员变量或者方法入参处标注@Autowired按类型匹配注入,也可以使用@Qualifier按名称配置注入。通过在方法上标注@PostConstrut和PreDestroy注解指定的初始化方法和销毁方法(可以定义任意多个)。通过@Scope(“prototype”)指定Bean的作用范围。通过在类定义处标注@Lazy(true)指定Bean的延迟加载。

当Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置,配置比较简单。

  • 基于Java类配置
@Configuration  
public class Conf {   
    @Scope(“prototype”)   
    @Bean(“loginUserDao”)   
    public LoginUserDao loginUserDao() {   
        return new LoginUserDao();   
    }   
}   

在标注了@Configuration的java类中,通过在类方法标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑。通过@Bean的name属性可以定义Bean的名称,未指定时默认名称为方法名。在方法处通过@Autowired使方法入参绑定Bean,然后在方法中通过代码进行注入;也可以调用配置类的@Bean方法进行注入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值