Spring Boot注解Bean及其装配原理

本文详细介绍了SpringBoot中数据源的配置方式,包括使用Java配置和属性注入,并展示了如何通过@ConfigurationProperties进行更优雅的注入。此外,还讲解了SpringBoot的自动配置原理,以及如何处理多配置文件。同时,提到了项目整合框架如SpringMVC、Mybatis的集成,以及单元测试示例。最后,简述了SpringBoot项目的部署流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot

注解的方式
Java配置

JdbcConfig.java

//使用java 配置
@Configuration 											//声明是一个配置类
@PropertySource("classpath:/config/jdbc.properties")    //指定属性文件的路径是:jdbc.properties
public class JdbcConfig {
	@Value("${jdbc.url}")								//通过 @Value 为属性注入值
	String url;
	@Value("${jdbc.driverClassName}")
	String driverClassName;
	@Value("${jdbc.username}")
	String username;
	@Value("${jdbc.password}")
	String password;
	
	@Bean                                              //@Bean将方法的返回值加入Spring容器中。
	public  DruidDataSource dataSource() {
		// TODO Auto-generated method stub
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(driverClassName);
		dataSource.setUrl(url);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		return dataSource;
	}
}
#jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/nutzdemo?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=123456
使用SpringBoot 的属性注入(Spring Boot推荐的)

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/nutzdemo?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

JdbcProperties.java

@ConfigurationProperties(prefix = "spring.datasource") //通过@ConfigurationProperties声明当前类为属性读取类
@Data
public class JdbcProperties {
	
	private String url;
	private String username;
	private String password;
	private String driverClassName;
}

JdbcConfig.java

@Configuration

//通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象

@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
	
//	@Autowired
//	private JdbcProperties prop;             //第一种使用方式
    
//	private JdbcProperties jprop;
//	public JdbcConfig2(JdbcProperties jprop) {
//		this.jprop = jprop;                  //第二种使用方式
//	}
	
	@Bean
	public  DruidDataSource dataSource(JdbcProperties jdbc) {      //第三种使用方式
		// TODO Auto-generated method stub
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(jdbc.getDriverClassName());
		dataSource.setUrl(jdbc.getUrl());
		dataSource.setUsername(jdbc.getUsername());
		dataSource.setPassword(jdbc.getPassword());
		return dataSource;
	}
} 
更优雅的注入
@Configuration
public class JdbcConfig{
	@Bean
	// 声明要注入的属性前缀,Spring Boot会自动把相关属性通过set方法注入到DataSource
	@ConfigurationProperties(prefix ="spring.datasource")
	public DruidDataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		return dataSource;
	}
}

使用的前提是:该类必须有对应属性的set方法!

自动配置原理
  • @SpringBootApplication–@EnableAutoConfifiguration

  • 默认配置原理

    默认配置类–spring.factories

    默认配置属性–通过@EnableAutoConfifiguration注解引入properties文件,可在application.yml/application.properties 自定义配置覆盖默认属性值

多配置文件
  • 如果properties和yml文件都存在,如果有重叠属性,默认以Properties优先
  • 当一个项目中有多个yml配置文件的时候,可以以application-**.yml命名,然后再在application.yml中激活即可,如
#加载其它配置文件 
spring: 
	profiles: 
		active: abc,def
整合框架
  • 整合Spring MVC、Mybatis

  • Junit

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Slf4j
    public class RedisTest {
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Test
        public void test() {
            ......
        }
    }
    
  • Redis

项目部署

在pom.xml添加插件spring-boot-maven-plugin,使用maven的命令package打包,之后在项目下的 target 目录中将有jar包

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
	</plugins>
</build>
java -jar xxx-1.0-SNAPSHOT.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值