| | |
| @Component | 把类加入容器中 |
| @Autowired | 1.将构造函数的参数装配到当前类的bean对象 2.将成员变量.... 3.setter方法 4. 任意方法 |
| @ComponentScan | 扫描主键 |
| @Configuration | 当前的类是一个配置类 |
| @RunWith(SpringJUnit4ClassRunner.class) | 自动初始化spring上下文环境 |
| @ContextConfiguration(classes = AppConfig.class) | 自动读取配置文件 |
| @Primary | 当有多个实现类时,加在类文件上标记为首选bean |
| @Qualifier("normal") | 限定符,当多个实现类时,在类定义和测试的上方都加入这个注解,就可以指定使用哪个实现类; 也可以使用 @Component("festival")指定id; 都不写的话默认id是类名的首字母小写。 |
| @Controller | controller层代替@Component |
| @Service | service层代替@Component |
| @Repository | dao层代替@Component |
| @Bean | 在配置类中添加,实现java装配;spring应用程序启动时回自动调用被注解的方法 |
| @Scope("prototype") @Scope(scopeName ="prototype") @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) | 定义bean的作用域 |
| @PostConstruct, @PreDestory | 对象的初始化和销毁 |
| @RequestMapping | 注解映射请求路径 |
| @RequestAttribute | 获取HTTP的请求(request)对象属性值,用来传递给控制器的参数。 一般在jsp页面设置 request.setAttribute("name", "baixue") ,在java文件中接收 |
| @RequestParam | 在后台接收参数,通常用于get请求,接收url中的参数 @RequestParam(name = "sort", required = false) String sort |
| @RequestBody | 在后台接收参数,接收请求体中的参数 |
| @PathVariable | 功能类似于@RequestParam,@PathVariable int from |
| @Transactional | 声明式事务管理 |
| @SuppressWarnings | 给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默 |
| @PostConstruct | PostConstruct注解用于方法上,该方法在初始化的依赖注入操作之后被执行 |
项目自己封装的注解
| @PRemote | Dubbo的消费者上加这个注解 |
| @PService | Dubbo的服务者上加这个注解 |
| @RegistryAPI | 注册到Gateway上的注解 |
Autowired使用场景
//@Scope("prototype")
//@Scope(scopeName ="prototype")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
//@Scope(scopeName ="prototype")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Api注解可以不用写
@ApiOperation 注解可以不写
@ApiOperation 注解可以不写
1. 用在构造函数上
package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CdPlayer {
private CompactDisc cd;
private Power power;
public CdPlayer() {
super();
System.out.println("Cdplayer无参构造函数");
}
@Autowired
public CdPlayer(CompactDisc cd, Power power) {
this.cd = cd;
this.power = power;
System.out.println("Cdplayer的多参数构造函数" );
}
public void play(){
power.supply();
cd.play();
}
} 2. 用在成员变量上
package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CdPlayer {
@Autowired
private CompactDisc cd;
@Autowired
private Power power;
public CdPlayer() {
super();
System.out.println("Cdplayer无参构造函数");
}
public void play(){
power.supply();
cd.play();
}
}
3.用在setter方法上 package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CdPlayer {
private CompactDisc cd;
private Power power;
public CdPlayer() {
super();
System.out.println("Cdplayer无参构造函数");
}
@Autowired
public void setCd(CompactDisc cd) {
this.cd = cd;
System.out.println("调用setCd");
}
@Autowired
public void setPower(Power power) {
this.power = power;
System.out.println("调用setPower");
}
public void play(){
power.supply();
cd.play();
}
} package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CdPlayer {
private CompactDisc cd;
private Power power;
public CdPlayer() {
super();
System.out.println("Cdplayer无参构造函数");
}
@Autowired
public void prepare(CompactDisc cd,Power power){
this.cd =cd;
this.power = power;
System.out.println("prepare方法的调用");
}
public void play(){
power.supply();
cd.play();
}
}
Autowired的required属性
标识注入的对象是可选的(可能找不到)
package soundsystem;
import com.sun.org.apache.xpath.internal.functions.FuncFalse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CdPlayer {
@Autowired(required = false)
private CompactDisc cd;
@Autowired
private Power power;
public CdPlayer() {
super();
System.out.println("Cdplayer无参构造函数");
}
public void play(){
power.supply();
if(cd != null){
cd.play();
}
}
} 设置组件扫描的基础包
@ComponentScan默认只能扫描当前包及其子包的组件,无法扫描其他包 可以扫描其他包 :
@ComponentScan("包名") @ComponentScan(basePackages = {"包名1","包名2"}) @ComponentScan(basePackageClasses = {UserController.class, UserService.class, UserDao.class})

京公网安备 11010502036488号