spring菜鸟入门(spring 快速入门)

spring菜鸟入门(spring 快速入门)p id main toc strong 目录 strong p 一 Spring 最基本的使用 1 创建 Maven 项目 不需要模板 2 添加 Spring 框架支持 3 添加启动类 没啥可说的符合规范即可 4 创建 bean 对象 5 将 bean 对象注册到 Spring 中

大家好,我是讯享网,很高兴认识大家。



 <p id="main-toc"><strong>目录</strong></p> 

讯享网

一、Spring最基本的使用

   

 1.创建Maven项目(不需要模板)   

 2.添加Spring框架支持

 3.添加启动类(没啥可说的符合规范即可)

 4.创建bean对象

 5.将bean对象注册到Spring中

(a)先在resources文件夹中创建一个xml文件(注意:是test文件用了.xml后缀 不是直接创建一个xml文件)

(b)然后在文件中复制配置代码

 (c)然后就可以进行正式的注册bean了

6.取出(使用)bean对象

(a)获取上下文对象

(b)取出bean对象

(c)使用(运行结果)

getbean()的三种用法

1.根据id获取bean(一个String参数)

2.根据class获取bean(一个class参数)

3.根据id和class获取bean(一个String参数和一个class参数)

ApplicationContext和BeanFactory的共同点和不同点

共同点:

不同点:

二、快速存储bean对象

1.创建Maven项目

2.添加Spring框架支持

3.添加启动类

4.创建bean对象

5.复制配置代码

6.添加注解

7.取出bean对象

五大注解

@Bean注解

@Bean的改名功能

三、Bean读取(对象装配对象注入)

1.属性注入

2.Setter注入

3.构造注入

@Resource注解

Bean的六种作用域:

Spring的主要执行流程

Bean的生命周期



         注意路径要全英文,路径带中文可能会导致不可预知的错误

         在pom.xml文件中添加依赖


讯享网

 

 可直接复制以下代码

讯享网

注意复制依赖后 不要忘记手动导入

IDEA中直接点击这个

  就是创建一个普通的类

(a)先在resources文件夹中创建一个xml文件(注意:是test文件用了.xml后缀 不是直接创建一个xml文件)

 

 (酱紫操作)

(b)然后在文件中复制配置代码

 

 ©然后就可以进行正式的注册bean了

 每注册一个bean 就在这加一行标签

id是自定义的名称 class是要注册的bean类名

 在主类中取出对象

(a)获取上下文对象

讯享网

这个参数就是我们上一步中自己创建的xml文件名

(b)取出bean对象

 

这个参数是我们自己规定的id

这个类名就是步骤4中自己写的类名

(c)使用(运行结果)

 可以看出已经成功了

1.根据id获取bean(一个String参数)

讯享网

2.根据class获取bean(一个class参数)

 

已经知道它的类型了就不用强转类型了

注意如果同一个类(bean)被注册多次的话会报错

3.根据id和class获取bean(一个String参数和一个class参数)

讯享网

共同点:

都用来获取Spring上下文对象

不同点:


1.继承关系和功能: ApplicationContext属于BeanFactory 子类,ApplicationContext具备了BeanFactory 所有的功能和能力。BeanFactory只具备最基础访问Bean 的能力。ApplicationContext 具备更多能力,比如国际化支持、资源访问支持等…
2.性能和加载方式: BeanFactory 按需加载,当需要使用Bean 的时候再加载; ApplicationContext一次性加载所有的Bean。
 

前四步和上面一样

还是在resources中创建一个.xml文件(强调!和上次相同 是test格式文件 只是命名用.xml后缀)

 

这个红色框出的是自定义参数:在哪个范围内搜索bean对象

我在java目录下创建了一个Beans包专门保存bean对象  所以这个参数填Beans

在要注册的bean类上面加注解(有五种类注解 下面会详细介绍)

我们这次没有在.xml文件里面指定id 那么我们怎么找到这个bean呢?

 bean对象默认id为将类名首字母小写

如Test -> test

特殊情况:当类名首字母和第二个字母均为大写时 自动命名为原类名

TEst -> TEst

启动类上是要引用对应类的 


@Controller [控制器]验证前端传递的参数的(安全检查)
@Service [服务层] 服务调用的编排和汇总
@Repository [仓库(数据仓库....) ](直接操作数据库)
@Component [组件] 通用化的工具类
@Configuration [配置]项目的所有配置

这五大注解的用法都是一样的,功能上没有本质差异,使用不同的注解只是代码规范,增加可读性而已

(在SpringMVC中可不一样啊啊)@Controller、@Service、@Repository、@Configuration都是基于@Component实现的

@Bean注解是方法注解要和五大注解搭配使用 且适用于有返回对象的方法

首先我们先创建一个想要使用的类

讯享网

然后在用另一个类去实现Bean注解把它存在Spring中

 

然后在运行类里面调用

 那么我们绕这么多弯弯 实现了原来的功能 这有什么意义呢?

那么久引出了@Bean注解的特殊功能! 改名!

还是原来的程序,在@Bean后面加了参数

 运行时就会报错

把运行类的getBean参数改成 @Bean的参数

 运行成功!

@Bean的参数有三种写法

@Bean(name = "test1")

@Bean("test1")               (相较于上一种省略了name=)

@Bean(name = {"test1","test2"})    (一个Bean起多个名字)

把Bean存入Spring之后的使用,要比获取上下文对象再getbean简单

在一个类中 把bean作为类对象注入

讯享网

创建了一个Demon类 在里面属性注入test

 启动类中调用Demon1   运行成功

(如果你是在其他包中创建的另一个类 记得在.xml中包含新的包)

属性注入优点:简单!

缺点: 1.不能注入final修饰的属性

2.只适用于IoC容器

3.因为简单,滥用风险大(容易违背单一设计原则)

 (直接右键生成一个Setter方法 在上面加@Autowired)

优点:符合单一设计原则(一个Setter只针对一个对象)

缺点:

1.不能注入一个不可变对象(final)

2.注入对象可能被改变

 右键生成大法万岁!

构造方法是官方推荐的注入方法!

优点:

1.可以注入final修饰的(final自身决定的 可以在两种情况下赋初值1.创建时 2.构造方法  也就解释了为什么前两种不可以)

2.注入对象不会被修改(构造方法只调用一次)

3.依赖对象在被使用前一定会被初始化

4.通用性好,因为构造方法是JDK自带的

没有缺点!如果注入太多参数是程序员的问题(?)

@Resource注解可以实现属性注入和Setter注入,不能实现构造注入(使用方法)

@Autowired注解是Spring提供的,@Resource是来自JDK下的注解,所以@Resource的通用性更好  @Resource有更多的参数设置

作用域就是生命周期,默认情况下 作用域是singleton(单例模式)

1.singleton(单例模式) 只有一个全局对象

单例模式会出现一种问题,就是有一个类,这个类本身的内容是A,这时候甲同学根据自己的需求把它修改成了B,然后乙同学再去使用这个类 它的内容就改变了

2.prototype(原型模式) 每次访问都会创建一个对象

3.request(请求作用域)(只能在Spring MVC中使用)  每次Http请求都会创建一个对象

4.session(会话作用域)(只能在Spring MVC中使用)  每次会话都会创建一个对象(即使是同一个用户)

5.application(全局作用域)(只能在Spring MVC中使用)一个http servlet context中共享一个对象

6.websocket:Http WebSocket作用域(只能在WebSocket中使用)

Bean的作用域设置

一、枚举

 枚举方式好一点 因为有自动补全机制

二、参数

1.启动容器(启动类运行、加载配置容器)

2.Bean初始化(对配置文件中的Bean进行扫描 只扫描带有注解的)

3.将Bean对象注入到容器中

4.使用Bean

5.Spring销毁

1.实例化(分配内存空间 不是初始化)

2.设置属性(依赖注入)

3.初始化

    执行各种通知(方法)(各种 Aware 方法,如 BeanNameAware、BeanFactoryAware、     ApplicationContextAware 的接口方法)

    执行前置方法(BeanPostProcessor )

     初始化方法(@PostConstruct和init-method )

    初始化后置方法(BeanPostProcessor)

4.使用Bean

5.销毁Bean(执行destroy-method|@PreDestroy)

小讯
上一篇 2025-05-04 12:38
下一篇 2025-05-26 14:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/161774.html