浅谈spring框架
【摘要】 1、what is spring?Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。2、Spring主要做什么?解耦控制反转IOC依赖注入DI3、Spring第一个案例导包准备spring核心配置文件编写测试A和Demo在spring.xml中配置类A,也就是将A交给Spring ioc容器进行管理在Demo中测试并获取A的实例,调用它4、BeanBean就是Java...
1、what is spring?
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
解耦
控制反转IOC
依赖注入DI
3、Spring第一个案例
导包
准备spring核心配置文件
编写测试A和Demo
在spring.xml中配置类A,也就是将A交给Spring ioc容器进行管理
在Demo中测试并获取A的实例,调用它
4、Bean
Bean就是Java中的类
5、Bean初始化方式
Bean是在ioc容器初始化时就创建了
1、构造方法(默认方式)
2、静态工厂方法
//class指定的是工厂类路径,factory-method指的是工厂类中的方法
<bean id="a" class="com.blb.Factory" factory-method="createA"/>
3、实例工厂方法
<!--实例工厂的Bean-->
<bean id="factory" class="com.blb.Factory2"/>
<!--A类的Bean,factory-bean指向工厂Bean的id,factory-method指的是工厂类中的方法-->
<bean id="a" factory-bean="factory" factory-method="createA"/>
6、Bean的作用范围
单例
多例
request
session
application
websocket
7、依赖注入
就是将类中依赖对象在创建该对象的实例时,给动态赋值
构造方法注入
spring.xml配置文件
<bean id="b" class="com.blb.B"/>
<bean id="a" class="com.blb.A">
<constructor-arg ref="b"/>
</bean>
A类
public class A {
private B b;
public A(B b) {
this.b = b;
}
public void say(){
b.eat();
System.out.println("hello spring, i am A");
}
}
Setter方法注入
spring.xml配置文件
<bean id="a" class="com.blb.demo2.A">
<!--
name表示ioc容器要通过这个方法来进行依赖注入,方法由set+name的值组成,name的首字母大写
ref表示其它Bean的id
-->
<property name="b" ref="b"/>
</bean>
public class A {
private B b;
//set方法注入
public void setB(B b) {
this.b = b;
}
public void say() {
b.eat();
System.out.println("hello spring, i am A");
}
}
8、自动装配
自动装配即自动注入。
no(默认)
byName(根据set方法名查找)
byType(根据形参类型查找)
constructor(根据构造方法查找)
9、注解方式使用
9.1、xml和注解混合版
1、修改配置文件为扫描方式
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--扫描包,看哪些类被定义成了Bean-->
<context:component-scan base-package="com.blb"/>
</beans>
2、在需要设置为Bean的类上加入@Component
3、使用@Autowired来实现自动注入功能
4、测试
9.2、全注解方式
1、使用AnnotationConfigApplicationContext来创建ioc容器,该种方式允许使用注解来创建和注入Bean。
2、使用@ComponentScan来扫描包
3、使用@component来标记某个类是Bean
4、使用@autowired来注入其它Bean
@ComponentScan("com.blb")
@Component
public class Demo {
@Autowired
private A a;
@Autowired
private B b;
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Demo.class);
Demo demo = applicationContext.getBean(Demo.class);
demo.a.say();
demo.b.say();
}
}
9.3、常用注解
@component:标记某个类是一个Bean
@ComponentScan:定义扫描的包
@Resource:自动注入
@autowired:自动注入
@Configuration:标记该类是一个Bean的配置类
@Bean:标记该方法返回值为一个Bean
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)