这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【spring的IOC的注解】
【修真院java小课堂】spring的IOC的注解
开场语:
大家好,我是IT修真院上海分院第10期的学员洪阳,今天给大家分享一下,修真院官网java任务1,深度思考中的知识点——spring的IOC的注解.
(1)背景介绍:
传统的xml配置完成IOC,如果内容比较多则配置需花费很多时间,通过注解可以减轻工作量,但注解后修改要麻烦一些,偶合度会增加,应该根据需要选择合适的方法[1]。
(2)知识剖析:
在类上增加了一个注解Component,在类的开头使用了@Component注解,它可以被Spring容器识别,启动Spring后,会自动把它转成容器管理的Bean。
除了@Component外,Spring提供了3个功能基本和@Component等效的注解,分别对应于用于对DAO,Service,和Controller进行注解。
1:@Service用于注解业务层组件(我们通常定义的service层就用这个)
2:@Controller用于注解控制层组件(如struts中的action)
3:@Repository用于注解数据访问组件,即DAO组件
4:@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行注解。
singleton---单例 只创建一个对象。
prototype---原型 想创建多少个就创建多少了。
request---针对Web项目,不同的请求创建单独的Bean对象,同一个请求共享一个Bean。
session---针对Web项目,不同的会话创建单独的Bean对象,同一个会话共享一个Bean。
(3)常见问题:
@Component@Service@Controller@Repository@Component是否一样,使用时要不要区分
(4)解决方案:
这几个注解不同于上面的注解,上面的注解都是将被依赖的bean注入进入,而这几个注解的作用都是生产bean,这些注解都是注解在类上,将类注解成spring的bean工厂中一个一个的bean。@Controller,@Service,@Repository基本就是语义更加细化的@Component。
(5)编码实战:
@Component("user")
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
---------------------
@Component(value="user")
public class User {
@Value("1")
private Integer id;
@Value("lzgsea")
private String name;
public Integer getId() {
return id;
}
//@Value("1")
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
//@Value("lzgsea")
public void setName(String name) {
this.name = name;
}
}
---------------------
(6)拓展思考:
Spring中的注解大概可以分为两大类:
1)spring的bean容器相关的注解,或者说bean工厂相关的注解;
2)springmvc相关的注解。
spring的bean容器相关的注解,先后有:@required, @Autowired,@PostConstruct,@PreDestory,还有Spring3.0开始支持的JSR-330标准javax.inject.*中的注解(@Inject,@Named,@Qualifier,@Provider,@Scope,@Singleton).
springmvc相关的注解有:@Controller,@RequestMapping,@RequestParam, @ResponseBody等等。
要理解Spring中的注解,后续还要先要理解Java中的注解。
(7)参考文献:
lzgsea - CSDN - Spring注解详解 - https://blog.csdn.net/lzgsea/article/details/79829544 [1]
(8)更多讨论:
Q1:提问人:XML和注解各自有什么优缺点
A1:回答人:XML:可以适用任何场景; 结构清晰,维护方便.注解:有些地方用不了,这个类不是自己提供的,开发方便.
Q2:提问人:IOC是什么
A2:回答人:Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。
(9)鸣谢:
感谢师兄对我无微不至的日程提醒,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
更多内容,可以加入IT交流群565734203与大家一起讨论交流
这里是技能树·IT修真院:nofollow">https://www.jnshu.com,初学者转行到互联网的聚集地
原文链接:https://www.f2er.com/spring/67515.html