Spring框架常用注解简单介绍
SpringMVC常用注解简单介绍
SpringBoot(一)创建一个简单的SpringBoot工程
SpringBoot(二)SpringBoot多环境配置
SpringBoot(三)SpringBoot整合MyBatis
SpringBoot(四)SpringBoot整合 Redis
Spring
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。Spring的核心思想是IOC和AOP。
Spring注解分类:
- 用于创建对象的
- 用于注入数据的
- 用于改变作用范围的
- 和生命周期相关的(了解)
(一)用于创建对象的注解
@Component 注解
相当于 bean 标签,value属性用于指定id,如果不写,默认是当前类名首字母小写。
由此注解衍生出来的三个注解:
- @Controller:用于控制器,表现层
- @Service:用于业务层
- @Repository:用于持久层,Dao层
它们的作用、属性和 @Component 是一模一样的。它们的出现是Spring框架为我们提供更明确的语义话来指定不同层的bean对象。
@Controller和@RestController的区别?
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
- 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。例如:本来应该到success.jsp页面的,则其显示success.
- 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
- 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
(二)用于注入数据的注解
用于注入bean类型
@Autowired 注解
作用:自动按照类型注入。只要Spring容器中有唯一的类型匹配,就可以注入成功。如果没有匹配的类型就报错。
如果有多个类型匹配时,就用变量名称作为bean的id,再容器中查找,如果找到,就注入成功。没有找到就报错。
属性:
required:
取值为true时,如果没有匹配的对象,就报错。(默认值)
取值为false时,如果没有匹配的对象,不会报错。
@Qualifier 注解
作用:在自动按照类型注入的基础上,在按照bean的id注入。如果有多个类型匹配,就按照id注入。
属性:
value:用于指定bean的id
@Resource 注解
作用:直接按照bean的id注入
属性:
value:用于指定bean的id
以上三个注解,都只能用于注入bean类型,而不能用于注入基本类型、String类型和复杂类型。
@Value 注解
作用:用于注入基本类型、String类型
属性:
value:用于指定要注入的数据,它支持使用 Spring 的 EL 表达式(Spring 的 EL 表达式:${表达式})
(三)用于改变作用范围的注解
@Scope 注解
作用:用于改变bean的作用范围
取值:
- singleton:单例。(默认)(常用)
- prototype:多例
- request:请求范围
- session:会话范围
- global-session:全局会话范围
(四)和生命周期相关的注解(了解)
@PostContruct 注解
作用:用于指定初始化方法。
@PreDestroy 注解
作用:用于指定销毁方法。
示例代码
//@Component(value = "accountService")
@Service(value = "accountService")
@Scope("singleton")
public class AccountServiceImpl implements IAccountService {
// @Autowired
// @Qualifier("accountDao")
@Resource(name = "accountDao")
private IAccountDao dao;
// @Value("com.mysql.cj.jdbc.Driver")
@Value("${driverClass}")
private String driver;
@PostConstruct
public void init() {
System.out.println("--- init ---");
}
@PreDestroy
public void destroy() {
System.out.println("--- destroy ---");
}
@Override
public void saveAccount() {
dao.saveAccount();
System.out.println(driver);
}
}
网友评论