Spring Boot注解Bean及其装配原理

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
posted @ 2022-06-13 16:33  jyd0124  阅读(259)  评论(0编辑  收藏  举报