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
分类:
编程基础
标签:
Spring Boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?