springboot中的bean 以及注解分类

spring、spring mvc 框架的实现底层是通过java反射机制。

spring框架前期使用xml配置各种组件,程序运行需要的类,则通过java反射机制找到xml中配置的类名生成对应的实例(即bean),使用xml的方式来声明Bean的定义,Spring容器在启动的时候会加载并解析这个xml,把bean装载到IOC容器中。

而springboot中的注解,相当于通过注解替代了传统通过xml配置的方式,其底层原理任然是通过反射机制来加载类的实例。

一、spring中的bean

在Spring中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是由Spring IoC容器实例化、组装和管理的对象。否则,bean只是应用程序中的众多对象之一。bean及其之间的依赖关系反映在容器使用的配置元数据中。

也是是说:在springmvc中xml中配置的类,被IoC 容器实例化之后的对象都可以称为bean。

而在springboot中,通过@service  @controller @mapper  @component @configuration 注解的类,在springboot启动后实例化后的对象都可以称为bean。

二、springboot中的注解主要分为两类

一类是使用Bean:即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;

一类是注册Bean:,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。

三、java web演化之路

1、JSP + Servlet + JavaBean
JSP = JavaServer Pages,即前端页面的控制;
Servlet = Server applet,即服务器端的应用程序;
JavaBean,就是我们定义的对象,当我们想用这些类来描述现实事物时,会定义属性、get/set 方法,父类的具体实现等等。
这样我们有了对象,有了后台接收请求处理的服务器,有了前端页面,就能够搭建一个从前端到后端的整体框架。
但这个搭配有点麻烦,因为 JSP 既可以写标签,也可以内嵌 Java 代码,<% (Java code) %>,所有东西耦合在一起变得非常麻烦;
而现在纯的 HTML,支持 JS, 支持 HTML 标签,支持 CSS 样式,不支持插入 Java 代码,这就是 JSP 和 HTML 的最大的区别。
现在企业中开发时比如 Spring Boot 的开发,更多的还是用 HTML,或者用一些前端框架比如 freemarker 进行代替,JSP 已经被慢慢淘汰掉了,但是核心思想是一样的。

2、EJB - Enterprise JavaBeans

3、SSH = Spring + Struts + Hibernate

4、SSM = Spring + SpringMVC + MyBatis

5、Spring Boot

 四、springboot中的@Bean

springboot中的@Bean作用于方法上,被@Bean修饰的方法会产生一个bean 交给spring 容器管理。

五、springboot中的各类注解

主启动类注解
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@Configuration(@SpringBootConfiguration)
@EnableScheduling
@EnableFeignClients
@EnableDiscoveryClient
@EnableTioWebSocketServer
@EnableAsync
三层架构注解
@Controller
@RestController
@RequestMapping
@Service
@Repository
@Component
注入注解
@Autowired
@Resource
接口上注解
@RequestParam
@RequestBody
@PathVariable

参考地址:

https://blog.csdn.net/Gospel11/article/details/126135490

https://www.cnblogs.com/devour-zuan-blog/p/16704391.html

 

posted @ 2023-07-31 15:51  远洪  阅读(134)  评论(0编辑  收藏  举报