Spring框架
Java应用最广泛的框架,它的成功来源于理念,而不是技术本身
- IOC:控制反转
- AOP:面向切面编程
- DI:依赖注入
非侵入式设计:
不需要继承框架提供的任何一个类,即使跟换框架,代码也不需要大改。
JavaBean
SpringBean是JavaBean的扩展,现在的JavaBean作为一个对象,提供set、get方法
SpringBean只需要为接收设置值注入set方法
Spring优势:
- 低侵入
- 声明式事务
- 方便继承其他框架
- 提供了Javaweb三层的每一层的解决方案
Spring能帮我们干什么?:
装修:
1.自己干 ×
2.找装修公司 √
IOC容器:
控制反转
可以把对象放进容器中,交给Spring去管理,并且还是单例的
把对象放进容器中,对象一旦放入容器中,这个对象在我当前的项目中就可以共享,而且默认还是单例的
id:这个对象在IOC容器中的唯一标识
class:要放到spring的IOC容器中的全类名
<bean id="user" class="com.jsoft.entity.User">
把容器中的对象拿出来
public void IOCTest() {
加载Spring配置文件
ApplicationContext ioc = new ClassPathXmlApplicationContext("application.xml");
这个user对象是从ioc容器中获取到的
User user = (User)ioc.getBean(User.class);
user.say();
System.out.println(user);
}
属性注入:
ref:依赖,当使用ref属性,依赖于当前容器中已经存在的bean,进行属性的注入
scope:定义bean的作用域
- prototype:原型
- singleton:单例(默认)
- request:一次请求
- session:一次会话
1.构造器注入:根据参数名,根据索引位置,根据参数类型
<bean id="user" class="com.jsoft.entity.User">
<constructor- arg value="jsoft" name="name"></constructor-arg>
</bean>
调用user类中的有参构造参数
2.setter注入:调用set方法来进行属性注入(常用)
<bean id="user" class="com.jsoft.entity.User">
<property name="name" value="JSOFT"></ property>
</bean>
更多复杂的setter注入
-
自定义的数据类型(address):
如果bean要注入的是一个对象,那这个对象也要先注册到IOC容器中 <bean id="address" class="com.jsoft.entity. Address"> <property name="info" value="高新区"></ property> </ bean> <bean id="user" class="com.jsoft.entity.User"> <property name="name" value="JSOFT"></ property> 依赖当前容器中存在bean来注入 <property name="address" ref="address"></property> </bean>
-
数组
<property name="hobbies"> <array value-type="java.lang.String"> <value>篮球</value> <value>足球</value> </array> </property>
-
List集合
<property name="duties"> <list value-type="java.lang.S <value>董事长</value> <value>总经理</value> </list> </property>
-
set集合
<property name="carts"> <set value-type="java.lang.String"> <value>韭菜</value> <value>鸡蛋</value> </set> </property>
-
Map集合
<property name="map"> <map> <entry key="父亲" value="马云"></entry> <entry key="母亲" value="张瑛"></entry> </map> </property>
-
Properties
<property name="properties"> <props> <prop key="阿里巴巴">达摩院</prop> </props> </property>
自动装配
autowire:自动装配
byName:根据属性名去IOC容器中找名字相同的bean进行自动注入
byType:根据属性的类型自动注入
<bean id="user" class="com.jsoft.entity.User" autowire="byName">
注解:自动装配
context: component-scan base-package="com.jsoft.entity"</context:component-scan>
并且在类中加上
@Autowirit
强制注解其他
@Qualifier ( " address1")
@Resource
标签:容器,框架,Spring,bean,user,IOC,注入
From: https://www.cnblogs.com/figh466/p/16714193.html