我爱Java系列之---SpringBoot中常用的注解和两种注入方式
Posted 少年攻城狮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我爱Java系列之---SpringBoot中常用的注解和两种注入方式相关的知识,希望对你有一定的参考价值。
@EnableConfigurationProperties(DataSourceProperties.class) 来声明要使用DataSourceProperties 这个类并初始化该类对象,该类不用放在IOC容器中,可以通过该注解直接使用。
2.@Component:一般写在类上边,通过该注解将当前类初始化到Spring的IOC容器中,其他类若想调用,直接用@Autowired去容器中拿。
3.@Confifiguration: 一般写在类上边,标明该类是一个配置类,被注解的类内部一般包含一个或多个被@Bean注解的方法。相当于把该类作为spring的xml配置文件中的 <beans></beans> 。
4.@Bean注解的方法,这些方法将会被spring进行扫描,并初始化到Spring容器,bean的id为方法名。@Bean注解主要用在@Confifiguration注解的类里,也可以用在@Component注解的类里。
5.@ConfifigurationProperties:注解声明当前类为属性读取类,这个注解并不会初始化该类对象到IOC中,prefix="jdbc" 读取配置文件中(properties或yml),前缀为jdbc的值。
*****************************************************************************
常见的两种注入方式:
第一种注入方式:如果我们需要将配置文件的数据库连接参数,读取到java对象中,可以用@Component和@ConfifigurationProperties注解实现。
1)新建application.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/springboot
jdbc.username=root
jdbc.password=123456
2)新建一个类,用来进行属性绑定并注入:
/*** @ConfigurationProperties 注解声明当前类为属性读取类 * @Component 注解将当前类JdbcProperties初始化到IOC中 */
@Component
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String url;
private String driverClassName;
//此处省略get和set方法,及部分属性
3)JdbcProperties已被初始化到IOC中,我们就可以通过spring的bean注入使用了
第二种注入方式:这里仍然以配置数据库为例,使用@ConfifigurationProperties + @EnableConfifigurationProperties完成。
1)导入数据源maven坐标
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency>
2)新建一个类,用来进行属性注入:
@ConfigurationProperties(prefix = "jdbc")
public class DataSourceProperties{
private String url;
private String driverClassName;
private String username;
private String password;
// ... 略 // getters 和 setters
}
@Configuration //标明该类是一个配置类
@EnableConfigurationProperties(DataSourceProperties.class)//直接声明要使用DataSourceProperties类,来读取配置文件
public class DataSourceConfig { @Bean public DataSource dataSource(DataSourceProperties properties){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUsername(properties.getUsername()); druidDataSource.setDriverClassName(properties.getDriverClassName()); druidDataSource.setUrl(properties.getUrl()); druidDataSource.setPassword(properties.getPassword()); return druidDataSource; } }
4)测试结果:
注意:import javax.sql.DataSource;
以上是关于我爱Java系列之---SpringBoot中常用的注解和两种注入方式的主要内容,如果未能解决你的问题,请参考以下文章
我爱java系列之---springboot项目集成swagger2
我爱java系列---springboot项目集成zookeeper作为注册中心