Spring Boot注解Bean及其装配原理

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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中,如果需要覆盖默认的Bean装配,可以使用@Primary注解或者使用@Configuration注解和@Bean注解的组合方式。 1. 使用@Primary注解 @Primary注解可以用于标记一个Bean,表示该Bean为首选Bean,当有多个相同类型的Bean时,优先选择被@Primary注解标记的Bean。 例如,我们要覆盖默认的RestTemplate Bean,可以按照以下方式进行配置: ``` @Configuration public class AppConfig { @Bean @Primary public RestTemplate restTemplate() { return new RestTemplateBuilder().build(); } } ``` 在上面的代码中,我们使用@Configuration注解标记了AppConfig类,并在该类中定义了一个名为restTemplate的Bean对象,使用@Bean注解标记了restTemplate()方法,并使用@Primary注解标记该方法,表示该方法返回的RestTemplate为首选Bean。 2. 使用@Configuration注解和@Bean注解的组合方式 如果要覆盖默认的Bean装配,也可以使用@Configuration注解和@Bean注解的组合方式。 例如,我们要覆盖默认的RestTemplate Bean,可以按照以下方式进行配置: ``` @Configuration public class AppConfig { @Bean public RestTemplate restTemplate() { return new RestTemplateBuilder().build(); } } ``` 在上面的代码中,我们使用@Configuration注解标记了AppConfig类,并在该类中定义了一个名为restTemplate的Bean对象,使用@Bean注解标记了restTemplate()方法。 当Spring Boot启动时,自动扫描所有的@Configuration注解类,并将其中所有被@Bean注解标记的方法返回的对象作为Bean进行装配。如果有多个相同类型的Bean,则选择其中一个作为默认的Bean。如果要覆盖默认的Bean,可以在另一个@Configuration注解类中重新定义同名的@Bean方法,Spring Boot优先选择该方法返回的对象作为Bean进行装配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值