1 Spring概念
-
Spring是开源的轻量级框架
-
Spring核心主要两部分
(1)aop:面向切面编程,扩展功能不是修改源代码实现
(2)ioc:控制反转(Inversion of Control)
- 创建对象不通过new方式实现,而是交给spring,通过配置的方式创建对象。
- spring是一站式框架
- Spring是一个容器,它负责创建并管理应用对象的生命周期。
2 Spring 的 IOC操作
-
ioc:把对象创建交给sring进行管理
-
实现ioc的两种方式
- 配置文件方式
(1)导包
spring-beans-4.2.2.RELEASE.jar
spring-beans-4.2.2.RELEASE-javadoc.jar
spring-beans-4.2.4.RELEASE-sources.jar
(2)做spring最基本的功能的时候,导入以下四个包
(3) 导入支持日志输出的jar包
log4j.1.2.16.jar
maven
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
第二步:创建一个User类,在里面创建方法
第三步:创建spring配置文件,配置类,创建对象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 注意:配置代码要在beans标签里面写 -->
</beans>
<bean id="user" class="entity.User"></bean>
第四步:创建测试类
开发中不要这样写
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
User user = (User)ac.getBean("user");
user.show(); // 打印666
3 Bean标签常用属性
-
id属性:相当于创建的对象的变量名
-
class属性:创建的对象的全类名
-
name属性:功能和id属性一样,id属性不能包含特殊符号,但是在name属性值里面可以包含特殊符号(解决statuse1里面的action的名字里有特殊符号的问题)
-
scaop属性
-
singleton:默认值,单例对象(例:servlet对象,详见:单例设计模式)
-
prototype:多例对象(配置Struts2的Action对象)
-
*request:所创建的对象作用范围是一次请求
-
*session:所创建的对象作用范围是一次全局会话
-
*globalSession:所创建的对象作用范围是一次全局会话
4 属性注入
- 属性注入方式
-
使用set方法注入
-
使用有参构造注入
-
使用接口注入
- 在spring框架里面,支持两种方式
<h2><a id="1_Spring_0"></a>1 Spring概念</h2>
<ol>
<li>
<p>Spring是开源的轻量级框架</p>
</li>
<li>
<p>Spring核心主要两部分</p>
</li>
</ol>
<p>(1)aop:面向切面编程,扩展功能不是修改源代码实现</p>
<p>(2)ioc:控制反转(Inversion of Control)</p>
<ul>
<li>创建对象不通过new方式实现,而是交给spring,通过配置的方式创建对象。</li>
</ul>
<ol start="3">
<li>spring是一站式框架</li>
</ol>
<ul>
<li>
<p>Spring在javaEE三层结构中,每一层都提供不同的解决技术。</p>
</li>
<li>
<p>web层:soringMVC</p>
</li>
<li>
<p>service层:spring的aop</p>
</li>
<li>
<p>dao层:spring的jdbcTemplate</p>
</li>
</ul>
<ol start="4">
<li>Spring是一个容器,它负责创建并管理应用对象的生命周期。</li>
</ol>
<h2><a id="2_Spring__IOC_24"></a>2 Spring 的 IOC操作</h2>
<ol>
<li>
<p>ioc:把对象创建交给sring进行管理</p>
</li>
<li>
<p>实现ioc的两种方式</p>
</li>
</ol>
<ul>
<li>
<p>ioc的配置文件方式</p>
</li>
<li>
<p>ioc的注解方式</p>
</li>
</ul>
<ol start="3">
<li>配置文件方式</li>
</ol>
<p>(1)导包</p>
<pre><div class="hljs"><code class="lang-shell">spring-beans-4.2.2.RELEASE.jar
spring-beans-4.2.2.RELEASE-javadoc.jar
spring-beans-4.2.4.RELEASE-sources.jar
</code></div></pre>
<p>(2)做spring最基本的功能的时候,导入以下四个包</p>
<ul>
<li>
<p>Beans</p>
</li>
<li>
<p>Core</p>
</li>
<li>
<p>Context</p>
</li>
<li>
<p>SpEL</p>
</li>
</ul>
<p>(3) 导入支持日志输出的jar包</p>
<pre><div class="hljs"><code class="lang-shell">log4j.1.2.16.jar
</code></div></pre>
<p>maven</p>
<pre><div class="hljs"><code class="lang-shell"><!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
</code></div></pre>
<p>第二步:创建一个User类,在里面创建方法</p>
<p>第三步:创建spring配置文件,配置类,创建对象</p>
<ul>
<li>
<p>spring核心配置文件名称和位置是固定不变的,建议放到<code>src</code>下面,官方建议<code>applicationContext.xml</code>,我们这里取名为<code>bean.xml</code></p>
</li>
<li>
<p>引入schema约束<br />
<code>\spring-framework-4.2.4.RELEASE-dist.zip\spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html</code></p>
</li>
</ul>
<pre><div class="hljs"><code class="lang-shell"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 注意:配置代码要在beans标签里面写 -->
</beans>
</code></div></pre>
<ul>
<li>配置类,创建类对象</li>
</ul>
<pre><div class="hljs"><code class="lang-shell"><bean id="user" class="entity.User"></bean>
</code></div></pre>
<p>第四步:创建测试类<br />
开发中不要这样写</p>
<pre><div class="hljs"><code class="lang-shell">ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
User user = (User)ac.getBean("user");
user.show(); // 打印666
</code></div></pre>
<h2><a id="3_Bean_95"></a>3 Bean标签常用属性</h2>
<ol>
<li>
<p>id属性:相当于创建的对象的变量名</p>
</li>
<li>
<p>class属性:创建的对象的全类名</p>
</li>
<li>
<p>name属性:功能和id属性一样,id属性不能包含特殊符号,但是在name属性值里面可以包含特殊符号(解决statuse1里面的action的名字里有特殊符号的问题)</p>
</li>
<li>
<p>scaop属性</p>
</li>
</ol>
<ul>
<li>
<p>singleton:默认值,单例对象(例:servlet对象,详见:单例设计模式)</p>
</li>
<li>
<p>prototype:多例对象(配置Struts2的Action对象)</p>
</li>
<li>
<p>*request:所创建的对象作用范围是一次请求</p>
</li>
<li>
<p>*session:所创建的对象作用范围是一次全局会话</p>
</li>
<li>
<p>*globalSession:所创建的对象作用范围是一次全局会话</p>
</li>
</ul>
<h2><a id="4__115"></a>4 属性注入</h2>
<ol>
<li>属性注入方式</li>
</ol>
<ul>
<li>
<p>使用set方法注入</p>
</li>
<li>
<p>使用有参构造注入</p>
</li>
<li>
<p>使用接口注入</p>
</li>
</ul>
<ol start="2">
<li>在spring框架里面,支持两种方式</li>
</ol>
<ul>
<li>
<p>set方法注入(主要使用)</p>
</li>
<li>
<p>有参数构造注入</p>
</li>
</ul>
留言