后端|Spring入门

Spring入门

IoC

IoC概念:Inversion of Control ,控制反转、依赖注入

1.控制什么?

控制对象的创建及销毁(生命周期)

2.反转什么?

将对象的控制权交给IoC容器

自己的IoC容器

约定

  1. 所有的Bean的生命周期交由IoC容器管理
  2. 所有被依赖的Bean通过构造方法执行注入
  3. 被依赖的Bean需要优先创建

Spring实例化Bean

SpringIoC 工程

1611044567216

1
2
3
4
5
6
7
8
//1.
<bean id="bean1" class="springbean.Bean" name="bean1_1,bean1_2"/>
<alias name="bean1" alias="bean1_3"/>
//2.
<bean class="springbean.Bean2Factory" factory-method="getBean2" id="bean2"/>
//3.
<bean id="bean3Factory" class="springbean.Bean3Factory"/>
<bean id="bean3" class="springbean.Bean3" factory-bean="bean3Factory" factory-method="getBean3"/>

注入Bean

SpringIoC_02 工程

1611050134411

1611063818486

简单方法

1611063846539

1611063860986

(⭐)name 名字不是 成员变量名称,而是set方法 除set 外 把第一个字母大写变小写

1611063904269

1611063922157

1611063999533

1611064005534

分模块开发(引入其他配置文件
1
< import resource="xxxx.xml"/ >

1611323221721

1611323636056

Bean作用域

scope

1611064393704

单例模式singleton :在一个Spring上下文环境中,只存在一个实例

多例模式prototype: 每次向Spring上下文请求实例,拿到的都是全新的实例

1611126498717

希望每次 调用Bean1的某个方法时,该方法拿到的Bean2都是一个新的实例

1611126604527

1611126998531

Web环境作用域

1611127294421

1611127330213

1611127365137

1611128872835

自定义作用域

1611134243311

1611134268479

1611134287854

Bean懒加载

1611134759453

1611134835669

如果某个Bean在程序整个运行周期都可能不会被使用,那么可以考虑懒加载

优点:尽可能的节省了资源

缺点:可能会导致某个操作响应时间增加

Bean初始化

1.使用init-method

2.让Bean实现InitializingBean接口

Bean销毁

1.使用destroy-method

2.让Bean实现DisposableBean接口

Bean 属性继承

1611136536611

1611136555071

Spring注解(⭐)

1611385413198

1611393844834

xml

1611147451399

annotation

1611147551325

简化

1611149484897

1611149598565

Bean取别名

1611149710827

通过注解注入Bean

1611205600710

1611205739708

1611205881001

1611205913594

1611206122916

简单类型直接赋值:@Value(“aaaa”)直接将aaaa注入到string

private String string;

1611206262577

1611216849636

1611216888776

1611217405098

初始化和销毁

1611217945625

1611217894842

1611217920925

Spring集成Junit

导入spring集成Junit的坐标,
使用@Runwith注解替换原来的运行期
使用@contextconfiguration指定配置文件或配置类
使用@Autowired注入需要测试的对象
创建测试方法进行测试

1
2
3
4
5
6
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class jdbcTemplateCRUDTest {
@Autowired
JdbcTemplate jdbcTemplate;
}