为了方便我们在日常开发注解的使用,本文将开发所需要的注解统一并进行归类起来,并结合用例进行解析,这样收藏起来以便日后使用。最主要本文将持续更新日常使用的注解,也可以评论中告知其他注解。
1依赖注入
1.1组件注解 @component
@component,而其余 @Controller、@Service、@Repository都组合了@component注解,主要为便于使用者Class组件进行归类。默认加载IOC容器中的组件,容器启动会调用无参构造器创建对象,再进行初始化赋值等操作
注解 | 解析 | 用法 |
---|---|---|
@Component | 组件注解,使用了该注解会基于注释的配置和类路径扫描时,会自动扫描并加载Class到ICO容器中 | 注释在类上 |
@Controller | 应用在MVC层(控制层)DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上 | 注释在类上 |
@Service | 应用在service层(业务逻辑层 | 注释在类上 |
@Repository | 应用在dao层(数据访问层) | 注释在类上 |
1.2依赖注入注解
@Autowired和@Inject、@Resource,可以与@Qualifier或者@Name配合使用,防止多实例注入时出错,以及值注入@Value。
注解 | 解析 | 用法 |
---|---|---|
@Autowired | 通过AutowiredAnnotationBeanPostProcessor类实现的依赖注入,默认是根据类型进行注入的,因此如果有多个类型一样的Bean候选者,则需要限定其中一个候选者,否则将抛出异常。 | 可注释在字段上,在方法上 |
@Inject | 作用与@Autowired一样 | 可注释在字段上,在方法上、构造器上 |
@Resource | 默认按照名称进行装配,名称可以通过name属性进行指定 | 可注释在字段上,在方法上 |
@Qualifier | 限定描述符除了能根据名字进行注入,更能进行更细粒度的控制如何选择候选者,可与@Autowired或者@Inject进行组合使用,进行精确注入 | 可注释字段上,在方法上、参数上以及注解中 |
1.3 作用域和生命过程
@Scope,具有4个作用域可看[Scope作用域以及涉及的问题]以及生命周期过程处理@PostConstruct、@PreDestroy 。
注解 | 解析 | 用法 |
---|---|---|
@Scope | 具有4个作用域singleton,prototype,session,request,默认为singleton单例模式 | 可注释在Class创建时 |
@PostConstruct | 相当于init-method,使用在方法上,当Bean初始化时执行 | 可注释在方法上 |
@PreDestroy | 相当于destory-method,使用在方法上,当Bean销毁时执行 | 可注释在方法上 |
1.4 章节用例(结合1.1、1.2、1.3小节)
@Service //组件注入,注明为service组件
@Scope("prototype")//声明Scope为Prototype
public class UseFunctionService {
@Autowired //默认按type注入
@Qualifier("functionService") //精确注入
FunctionService functionService;
@Resource(name="baseDao")//默认按name注入,可以通过name和type属性进行选择性注入
private BaseDao baseDao;
@Inject
@Qualifier("userServiceImpl") //精确注入
public IUserService userService;
@PostConstruct//执行完构造函数后执行
public postConstruct(){
System.out.println("postConstruct");
}
@PreDestroy//在销毁Bean前执行
public perDestroy(){
System.out.println("perDestroy");
}
@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
this.userDao = userDao;
}
public String SayHello(String word){
return functionService.sayHello(word);
}
}
2. 配置注解
2.1 @Configuration配置注解
@Configuration可替换xml配置文件进行配置。被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。可与@PropertySource一起使用。
@Configuration作为元注解延伸了@SpringBootConfiguration
注解 | 解析 | 用法 |
---|---|---|
@Configuration | 配置类注解,可以与@Beae、@PropertySource一起使用,进行配置 | 注释在类、接口、枚举上 |
@SpringBootConfiguration | 组合注解,@Configuration配置、@EnableAutoConfiguration启用自动配置、@ComponentScan默认扫描@SpringBootApplication所在类的同级目录以及它的子目录 | 可注解在类上 |
@AutoConfigureAfter | 在指定的自动配置类之后再配置 | 可注解在类上 |
2.2扫描注解
@ComponentScan注解,被@Configuration注解标注的类上面,涉及了@filter过滤器注解
注解 | 解析 | 用法 |
---|---|---|
@ComponentScan | 定义扫描的路径&#x |