samwellwang

samwellwang

coder
twitter

Spring 中注解相关

其实在我的日常生活中是基本没用过注解的。但是听别的同学讲他们公司用到的蛮多的,想学习一下。发现注解真的好牛掰哦。。可以完全抛弃 xml 的配置。。。希望我们公司也可以用注解来开发。。

2020-05-09

其实在我的日常生活中是基本没用过注解的。但是听别的同学讲他们公司用到的蛮多的,想学习一下。发现注解真的好牛掰哦。。可以完全抛弃 xml 的配置。。。希望我们公司也可以用注解来开发。。

注解:
@Component:代表正是个组件
@Autowired:指定类型的 bean 注入到这个字段中
@Configuration:表示它是一个配置类
@ComponentScan:搜索整个包,把所有标记为 Component 的 Bean 自动创建出来,并根据 Autowired 装配

只需要:
每个 Bean 被标注为 @Component 并正确使用 @Autowired 注入;
配置类被标注为 @Configuration@ComponentScan
所有 Bean 均在指定包以及子包内。

@Scope (ConfigurableBeanFactory.SCOPE_PROTOTYPE) :创建一个原型 Bean
@Order :指定 List 中 Bean 的顺序 分别给 Bean 标记 Order (1),Order (2)….
@Autowired (required = false): 找不到对应的 bean 就略过
@Bean (“Second”) :创建同类型的 Bean Bean 的别名
@Primary:或者指定优先级

@Autowired(required = false)
@Qualifier (“z”) // 指定注入名称为”z” 的 ZoneId

@Value (“classpath:/logo.txt”) 注入 Resourse

@PropertySource (“app.properties”) 注入配置文件
@Value(“${app.zone}”) 注入配置文件的值
String zoneId;

“${app.zone}” 表示读取 key 为 app.zone 的 value,如果 key 不存在,启动将报错;
“${app.zone}” 表示读取 key 为 app.zone 的 value,但如果 key 不存在,就使用默认值 Z。

注入 JavaBean 持有所有的配置
@Component
public class SmtpConfig {
@Value(“${smtp.host}”)
private String host;

@Value("${smtp.port:25}")
private int port;

public String getHost() {
    return host;
}

public int getPort() {
    return port;
}

}
读取配置 JavaBean 中的配置信息
@Component
public class MailService {
@Value(“#{smtpConfig.host}”)
private String smtpHost;

@Value("#{smtpConfig.port}")
private int smtpPort;

}

@Profile:表示不同的环境 native test production

@Conditional (OnSmtpEnvCondition.class):条件注入
@ConditionalOnProperty (name=”app.smtp”, havingValue=”true”) 如果配置文件中存在 app.smtp=true,则创建
@ConditionalOnClass (name = “javax.mail.Transport”) 如果当前 classpath 中存在类 javax.mail.Transport,则创建

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。