Spring架構學習第一天–SpringIOC(控制反轉)與DI(依賴注入)
-
Spring Framework的一些學習網站
① github 網站—代碼托管 碼雲-代碼托管網站
② StackOverflow 代碼社群–一些外國代碼高手會解決一些問題(全英文)
一、Spring介紹
** Spring是輕量級的控制反轉(IOC)和 面向切面(AOP)的容器架構。
①什麼是輕量級的?
答:項目整合你需要浪費多大的資源叫開銷。浪費資源少的叫輕量級,浪費資源多的叫重量級。
②什麼是控制反轉
答:Spring通過一種稱作控制反轉的技術促進了松耦合。
③什麼是反轉
答:把之間需要使用者手動建立的執行個體的過程交給容器去完成。
**
二、需要為spring導入的jar包–以eclipse202003版本為例(現階段)
三、開始配置Spring(注解開發配置)
①先在src下建立 applicationContext.xml 配置檔案
在 applicationContext 配置檔案中這樣配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
<!-- 掃描這個com.hk.spring包下所有的加了注解的bean都放在這個容器中-->
<context:component-scan base-package="com.hk.spring"></context:component-scan>
</beans>
接着咱們再建立容器有兩種方式我們先來最常用的最常用的 一、 ApplicationContext
//測試類
public class UserTest {
private ApplicationContext cont;
@Before
public void init() {
//建立容器--加載你的配置類
cont = new ClassPathXmlApplicationContext("applicationContext.xml");
}
@Test
public void ceshi() {
UserServlet userservlet = (UserServlet) cont.getBean("servlet");
userservlet.find();
}
擷取bean有2種方式
第一種
第二種
第二種建立容器的方式(不常用)Resource
public class UserTest {
private BeanFactory factory;
@Before
public void init() {
//建立容器--加載你的配置類
Resource res = new FileSystemResource(new File("src/applicationContext.xml"));
factory = new XmlBeanFactory(resource);
}
@Test
public void ceshi() {
Studnet stu = (Studnet) factory.getBean("stu");
stu.hello();
}
四、這兩種建立容器的差別
Spirng使用ApplicationContext定義容器對象是在容器-預設懶加載為false時,初始化時就建立好bean的執行個體!!
Spring使用beanFactory建立容器生成bean執行個體是在調用getBean的時候才會去執行個體化bean!!
五、四種建立bean的方式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 1最常用的建立對象的方式 -->
<bean id="user" class="com.hk.spring.entity.User"></bean>
<!-- 2建立對象,使用靜态工廠方法執行個體化(簡單的工廠模式) -->
<bean id="apple" class="com.hk.spring.file.BeanFactory" factory-method="getBean"></bean>
<!-- 3建立對象 使用執行個體工廠方法執行個體化(工廠方法模式)-->
<bean id="apple2" factory-bean="bf2" factory-method="getBean"></bean>
<bean id="bf2" class="com.hk.spring.file.BeanFactory2"></bean>
<!-- 4set指派的方式特殊字元處理 -->
<bean id="user2" class="com.hk.spring.entity.User">
<property name="name" >
<value> <![CDATA["《賀凱》"]]> </value>
</property>
<property name="sex" value="24"></property>
</bean>
<!-- 5簡寫操作 -->
<bean id="user5" class="com.hk.spring.entity.User" p:name="賀" p:sex="20">
</bean>
<!-- 6數組與list指派 -->
<bean id="stu" class="com.hk.spring.entity.Student" p:sname="凱" p:age="1"></bean>
<bean id="user6" class="com.hk.spring.entity.User" p:name="賀" p:sex="20">
<property name="hobby">
<list>
<value>1</value>
<value>賀</value>
</list>
</property>
<property name="studen" ref="stu"></property>
<!-- map指派 -->
<property name="Studnets">
<map>
<entry key="123" value="321"></entry>
<entry key="1凱" value="1ppijh和"></entry>
</map>
</property>
</bean>
</beans>