spring学习(6)
1 spring概念
(1)spring核心兩部分
(2)spring一站式框架
(3)spring版本
可以使用基本的javaBean代替EJB,EJB是重量級框架。
1 spring是一個開源的輕量級框架
2 spring核心主要兩部分:
(1)aop:面向切面編程,擴展功能不是修改源代碼實現
(2)ioc:控制反轉,比如一個類,在類里面有方法(不是靜態方法),調用類型里面的方法,創建對象調用方法,創建類對象的過程,需要new出來對象。
-把對象的創建不是通過new方式實現,而是交給spring配置創建類對象。
3 spring是一站式框架
(1)spring在javaee三層結構中,每一層都提供不同的解決技術
-web層:springMVC
-service層:spring的ioc
-dao層:spring的jdbcTemplate
4 spring版本
(1)Hibernate5.x
(2)spring4.x
Spring 的IOC操作
1 把對象的創建交給spring進行管理
?
2 ioc操作兩部分
(1)ioc的配置文件方式
(2)ioc的注解方式
IOC底層原理
1 ioc底層原理使用技術
(1)xml配置文件
(2)dom4j解決xml
(3)工廠設計模式
(4)反射
2 畫圖分析Ioc實現原理
高內聚、低耦合:一個類之間各部分關系緊密,不同類之間關系不能緊密。
?ioc原理
IOC入門案例
第一步 導入jar包
(1)解壓資料zip文件
Jar特點:都有三個Jar包
(2)做spring最基本功能的時候,導入四個核心的jar包就可以了。
(3)導入支持日志輸出的jar包
第二步 創建類,在類里面創建方法
public class User {public void add(){System.out.println("add.............");}public static void main(String[] args) {//原始做法User user = new User();user.add();} }第三步 創建spring配置文件,創建配置類
(1)spring核心配置文件名稱和位置不是固定的
-建議放到src下面,官方建議使用名稱applicationContext.xml。
(2)引入schema約束
<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"><bean id="foo" class="x.y.Foo"><meta key="cacheName" value="foo"/><property name="name" value="Rick"/></bean></beans>(3)配置對象創建
<bean id="user" class="cn.itcast.ioc.User"></bean>第四步 寫代碼測試對象創建
@Testpublic void testUser(){//1 加載spring配置文件,根據創建對象ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");//得到配置創建的對象User user = (User)context.getBean("user");user.add();}配置文件沒有提示的問題
1 spring引入schema約束,把約束文件引入到myeclipse中
(1)復制約束路徑
http://www.springframework.org/schema/beans/spring-beans.xsd?
Spring的bean管理(xml方式)
Bean實例化的方式
1 在spring里面通過配置文件創建對象
2 bean實例化三種方式實現
第一種 使用類的無參構造創建(重點)
類里面需要有無參構造方法,如果類里面寫了構造方法,應該加上無參構造方法。否則會出現異常。
<bean id="user" class="cn.itcast.ioc.User"></bean>第二種 使用靜態工廠創建
(1)創建靜態方法,返回類對象
public class Bean2Factory {//靜態的方法,返回Bean2對象public static Bean2 getBean2(){return new Bean2();} } public class Bean2 {public void add() {System.out.println("bean2.............");} } <bean id="bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean>測試方法如下所示:
@Testpublic void testUser(){//1 加載spring配置文件,根據創建對象ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");//得到配置創建的對象/*User user = (User)context.getBean("user");user.add();*/Bean2 bean2 = (Bean2)context.getBean("bean2");System.out.println(bean2);bean2.add();}第三種 使用實例工廠創建
(1)創建不是靜態的方法,返回類對象
<!-- 使用實例工廠創建對象 --> <!-- 創建工廠對象 --><bean id="bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean><bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>Bean標簽常用屬性
(1)id 屬性:起名稱,id屬性值名稱任意命名
-id屬性值,不能包含特殊符號
-根據id值得到配置對象
(2)class 屬性:創建對象所在類的全路徑
(3)name 屬性:功能和id是一樣的,把id換成name一樣的,比如id="user",改成name="user",其他代碼不變,可以用。name屬性值里面可以包含特殊符號
(4)scope 屬性
-singleton:默認值,單例對象
-prototype:多實例
-request:創建對象把對象放到request域里面
-session:創建對象把對象放到session域里面
-globalSession:創建對象把對象里面globalSession里面
多實例應用場景
?配置action就要用到多實例對象
scope="prototype"屬性注入
1 創建對象時候,向類里面屬性設置值
2 屬性注入的方式介紹(三種方式)
(1)使用set方法注入
(2)使用有參構造方法注入
(3)使用接口注入
3 在spring框架里面,支持前兩種方式
(1)set方法注入(重點,用得最多)
(2)使用有參構造方法注入
使用有參數的構造注入屬性
<bean id="demo1" class="cn.itcast.property.PropertyDemo1"><!-- 使用有參構造注入 --><constructor-arg name="username" value="hello"></constructor-arg></bean>在java文件中
public class PropertyDemo1 {private String username;public PropertyDemo1(String username) {this.username = username;}public void test1(){System.out.println("demo1"+username);} }使用set方式注入
<bean id="book" class="cn.itcast.property.Book"><!-- 注入屬性值name屬性值:類里面定義的屬性名稱value屬性值:設置具體的值--><property name="bookName" value="易經經"></property> </bean>java文件中
public class Book {private String bookName;public void setBookName(String bookName) {this.bookName = bookName;}public void demobook(){System.out.println("book.............."+bookName);} }注入對象類型屬性(重點)
1 創建service類和dao類
(1)在service得到dao對象
2 具體實現過程
(1)在service里面把dao作為類型屬性
(2)生成dao類型屬性的set方法
public class UserService {//1 定義dao類型屬性private UserDao userDao;//生成set方法public void setUserDao(UserDao userDao) {this.userDao = userDao;}(3)在配置文件中注入關系
P名稱空間注入
?
轉載于:https://www.cnblogs.com/liaoxiaolao/p/9940300.html
總結
以上是生活随笔為你收集整理的spring学习(6)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于ML.NET v0.7的发布说明
- 下一篇: MySql 隐式转换