Java 常用注解@Configuration,@Bean及@ConfigurationProperties(prefix = "spring.datasource")
1、简述在springboot之前,我们常用的Spring Mvc项目中,我们通常会在spring.xml的配置文件中配置<beans>等相关的配置,这样当我们启动项目的时候,spring的运行机制会将配置的<beans>中的<bean>放到我们的spring容器中,我们可以通过@Autowired来直接使用容器中已经配置的对象。那么当我们在之后的sprin..
1、简述
在springboot之前,我们常用的Spring Mvc项目中,我们通常会在spring.xml的配置文件中配置<beans>等相关的配置,这样当我们启动项目的时候,spring的运行机制会将配置的<beans>中的<bean>放到我们的spring容器中,我们可以通过@Autowired来直接使用容器中已经配置的对象。那么当我们在之后的springboot项目中,我们一般不会使用spring.xml的配置文件,而是通过注解@Configuration,@Bean的方式进行项目启动时候的容器加载功能。
2、使用样例
(1)、需要搭建好一个springboot项目
(2)、我们想手动添加一个配置到容器中,且添加一个数据库配置到数据库中
配置文件如下,这里使用application.yml配置,注意不要使用tab键,:后需要有一个空格
(2)、创建实体BeanConfig对象(自定义内容)和DataSourceConfig对象(读取配置文件配置内容)
public class BeanConfig {
private String url;
private String username;
private String password;
// set和get方法
}
public class DataSourceConfig {
private String url;
private String username;
private String password;
// set和get方法
}
(3)、配置Configurer配置类
@ConfigurationProperties(prefix = "spring.datasource")为当前注入的bean对象读取配置文件以spring.datasource开头的配置项,如果之后的部分和实体类的属性一致的话,会将配置的内容注入给对象的属性中
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zw.domain.data.BeanConfig;
import com.zw.domain.data.DataSourceConfig;
@Configuration // 相当于springmvc中的<beans>
public class DataSourceConfigurer {
@Bean // 相当于springmvc中的<bean>,注入DataSourceConfig对象
@ConfigurationProperties(prefix = "spring.datasource") // 注入DataSourceConfig对象读取配置文件,以spring.datasource为前缀,之后字段和实体类的属性一致进行匹配诸如内容
public DataSourceConfig getDataSource(){
return new DataSourceConfig();
}
@Bean // 相当于springmvc中的<bean>,注入BeanConfig对象,自定义内容
public BeanConfig transferService() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setUrl("11111");
beanConfig.setUsername("name22");
return beanConfig;
}
}
(4)、测试类测试
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import com.zw.domain.data.BeanConfig;
import com.zw.domain.data.DataSourceConfig;
@RestController
@RequestMapping(value = "test", method = {RequestMethod.POST, RequestMethod.GET})
public class TestController {
// 取出容器中注入的DataSourceConfig对象
@Autowired
private DataSourceConfig dataSourceConfig;
// 取出容器中注入的BeanConfig对象
@Autowired
private BeanConfig beanConfig;
@RequestMapping("/test1")
@ResponseBody
public String test1() {
System.out.println("beanConfig:"+JSON.toJSONString(beanConfig));
System.out.println("dataSourceConfig:"+JSON.toJSONString(dataSourceConfig));
return "";
}
}
(5)、调用接口,测试结果
3、以上仅为个人学习理解,学海无涯苦作舟,见一个学一个吧!
更多推荐
所有评论(0)