| |
@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})