中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站在正在建設(shè)中品牌營(yíng)銷(xiāo)策劃怎么寫(xiě)

網(wǎng)站在正在建設(shè)中,品牌營(yíng)銷(xiāo)策劃怎么寫(xiě),wordpress帶下載功能,中國(guó)建設(shè)銀行支付網(wǎng)站文章目錄1. IOC容器概念2. IOC底層原理3. IOC(接口)4. IOC操作Bean管理(概念)5. IOC操作Bean管理(基于xml方式)5.1 基于xml創(chuàng)建對(duì)象5.2 基于xml方式注入屬性5.2.1 DI:依賴(lài)注入,就是注…

文章目錄

  • 1. IOC容器概念
  • 2. IOC底層原理
  • 3. IOC(接口)
  • 4. IOC操作Bean管理(概念)
  • 5. IOC操作Bean管理(基于xml方式)
    • 5.1 基于xml創(chuàng)建對(duì)象
    • 5.2 基于xml方式注入屬性
      • 5.2.1 DI:依賴(lài)注入,就是注入屬性
      • 5.2.2 xml注入其他類(lèi)型屬性
      • 5.2.3 注入屬性-外部bean
      • 5.2.4 注入屬性-內(nèi)部bean(很多人喜歡用外部bean,結(jié)構(gòu)明顯)
      • 5.2.5 注入屬性-級(jí)聯(lián)賦值
      • 5.2.6 xml注入集合屬性(數(shù)組、List、Map、Set)
  • 6. IOC操作Bean管理(FactoryBean)
  • 7、IOC操作Bean管理(bean作用域)
  • 8. IOCBean管理(bean生命周期)
  • 9. IOC操作Bean管理(xml自動(dòng)裝配)
  • 10. IOC操作Bean管理(外部屬性文件)
  • 11. IOC操作Bean管理(基于注解方式:簡(jiǎn)化xml配置)
  • 12. 基于注解方式實(shí)現(xiàn)屬性注入
  • 13. 完全注解開(kāi)發(fā)

1. IOC容器概念

  • 控制反轉(zhuǎn),把對(duì)象創(chuàng)建和對(duì)象之間的調(diào)用過(guò)程,交給Spring進(jìn)行管理。
  • 使用IOC目的:為了耦合度降低

2. IOC底層原理

  • XML解析、工廠設(shè)計(jì)模式、反射
  • IOC過(guò)程
    • 第一步:xml配置文件,配置創(chuàng)建的對(duì)象
    <bean id="dao" class="com.zsh.UserDao"></bean>
    
    • 第二步:有service類(lèi)和dao類(lèi),創(chuàng)建工廠類(lèi)
    class UserFactory{public static UserDao getDao(){//1.xml解析 String classValue = class屬性值;          //2.通過(guò)反射創(chuàng)建對(duì)象Class clazz = Class.forName(classValue);return (UserDao)clazz.getDeclaredConstructor().newInstance();}
    }
    

3. IOC(接口)

  • IOC思想基于IOC容器完成,IOC容器底層就是對(duì)象工廠
  • Spring提供IOC容器實(shí)現(xiàn)方式:(兩個(gè)接口)
    • BeanFactory:IOC容器基本實(shí)現(xiàn),是Spring內(nèi)部的使用接口,不提供開(kāi)發(fā)人員進(jìn)行使用。
      加載配置獲取文件時(shí)候不會(huì)創(chuàng)建對(duì)象,在獲取對(duì)象(使用)才去創(chuàng)建對(duì)象。
    • ApplocationContext:BeanFactory接口的子接口,提供更多更強(qiáng)大的功能,一般由開(kāi)發(fā)人員進(jìn)行使用。
      加載配置文件時(shí)候就會(huì)把在配置文件中的對(duì)象進(jìn)行創(chuàng)建。
  • ApplicationContext接口有實(shí)現(xiàn)類(lèi)
    在這里插入圖片描述

4. IOC操作Bean管理(概念)

  • 什么是Bean管理? Bean管理有兩方面
    • Spring創(chuàng)建對(duì)象
    • Spring注入屬性
  • Bean管理操作有兩種方式
    • 基于xml配置文件方式實(shí)現(xiàn)
    • 基于注解方式實(shí)現(xiàn)

5. IOC操作Bean管理(基于xml方式)

5.1 基于xml創(chuàng)建對(duì)象

<!-- 配置User對(duì)象 -->
<bean id="user" class="com.spring.User"></bean>
  • 在spring配置文件中,使用bean標(biāo)簽,標(biāo)簽里面添加對(duì)應(yīng)屬性,就可以實(shí)現(xiàn)對(duì)象創(chuàng)建
  • 在bean標(biāo)簽有很多屬性,介紹常用的屬性
    • id屬性:唯一標(biāo)識(shí)
    • class屬性:類(lèi)全路徑(包類(lèi)路徑)
  • 創(chuàng)建對(duì)象時(shí)候,默認(rèn)也是執(zhí)行無(wú)參數(shù)構(gòu)造方法完成對(duì)象創(chuàng)建。

5.2 基于xml方式注入屬性

5.2.1 DI:依賴(lài)注入,就是注入屬性

  • 第一種注入方式:set注入方式
    • 創(chuàng)建類(lèi),定義屬性和對(duì)應(yīng)的set方法
    • 在spring配置文件中配置對(duì)象創(chuàng)建,配置屬性注入。
    <bean id="book" class="zsh.spring.Book"><!--2.set方法注入屬性--><!--name:類(lèi)里面屬性名稱(chēng)value:向?qū)傩宰⑷氲闹?-><property name="bname" value="天龍八部"></property><property name="bauthor" value="金庸"></property>
    </bean>
    
  • 第二種注入方式:有參數(shù)構(gòu)造方式
    • 創(chuàng)建類(lèi),定義屬性,創(chuàng)建屬性對(duì)應(yīng)有參構(gòu)造方法。
    • 在spring配置文件中配置。
```xml
<!--3.有參構(gòu)造注入屬性-->
<bean id="orders" class="zsh.spring.Orders"><constructor-arg name="oname" value="abc"></constructor-arg><constructor-arg name="address" value="China"></constructor-arg>
</bean>
```
  • p名稱(chēng)空間注入(了解)
    • 使用p名稱(chēng)空間注入,可以簡(jiǎn)化基于xml配置方式。
    <beans xmlns="http://www.springframework.org/schema/beans"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">
    
    • 進(jìn)行屬性注入,在bean標(biāo)簽里面進(jìn)行操作。

5.2.2 xml注入其他類(lèi)型屬性

  • 字面量
    • null值
    <property name="address"><null></null>
    </property>
    
    • 屬性值包含特殊符號(hào)
    <!--屬性值包含特殊符號(hào)1.把《》進(jìn)行轉(zhuǎn)義2.把帶特殊符號(hào)內(nèi)容寫(xiě)到CDATA中-->
    <property name="bname"><value><![CDATA[《天龍八部》]]></value>
    </property>
    

5.2.3 注入屬性-外部bean

  • 創(chuàng)建兩個(gè)類(lèi)service類(lèi)和dao類(lèi)
  • 在service調(diào)用到里面的方法
    public interface UserDao {public abstract void update();}
    public class UserDaoImpl implements UserDao {@Overridepublic void update() {System.out.println("dao update....");}
    }
    public class UserService {private UserDao userDao;public void setUserDao(UserDao userDao){this.userDao = userDao;}public void add(){System.out.println("service add .....");userDao.update();}
    }
    
  • 在xml中配置
    <!-- 1 service和dao對(duì)象創(chuàng)建 --> 
    <bean id="userService" class="zsh.service.UserService"><!--name屬性:類(lèi)里面的屬性名稱(chēng)ref屬性:創(chuàng)建userDaoImpl對(duì)象bean標(biāo)簽--><property name="userDao" ref="userDaoImpl"></property>
    </bean>
    <bean id="userDaoImpl" class="zsh.dao.Impl.UserDaoImpl"></bean>
    

5.2.4 注入屬性-內(nèi)部bean(很多人喜歡用外部bean,結(jié)構(gòu)明顯)

  • 一對(duì)多關(guān)系:部門(mén)和員工(一個(gè)部門(mén)多個(gè)員工,一個(gè)員工屬于某一個(gè)部門(mén) )
  • 在實(shí)體類(lèi)之間表示一對(duì)多關(guān)系,員工表示所屬部門(mén),使用對(duì)象類(lèi)型屬性進(jìn)行表示
    //部門(mén)類(lèi)
    public class Dept {private String dname;public void setDname(String dname) {this.dname = dname;}
    }
    //員工類(lèi)
    public class Emp {private String ename;private String gender;//員工屬于某一個(gè)部門(mén)private Dept dept;public void setDept(Dept dept) {this.dept = dept;}public void setEname(String ename) {this.ename = ename;}public void setGender(String gender) {this.gender = gender;}
    }
    
  • 在spring配置中進(jìn)行配置。
    <!-- 內(nèi)部bean -->
    <bean id="emp" class="zsh.bean.Emp"><property name="ename" value="lucky"></property><property name="gender" value="女"></property><property name="dept"><bean id="dept" class="zsh.bean.Dept"><property name="dname" value="安保部"></property></bean></property>
    </bean>
    

5.2.5 注入屬性-級(jí)聯(lián)賦值

  • 方式一:同外部bean注入
  • 方式二:xml配置如下(需要在emp表給dept設(shè)置getter)
    <!-- 級(jí)聯(lián)賦值 -->
    <bean id="emp" class="zsh.bean.Emp"><property name="ename" value="lucky"></property><property name="gender" value=""></property><property name="dept" ref="dept"></property><property name="dept.dname" value="技術(shù)部"></property>
    </bean>
    <bean id="dept" class="zsh.bean.Dept"><property name="dname" value="安保部"></property>
    </bean>
    

5.2.6 xml注入集合屬性(數(shù)組、List、Map、Set)

  • 創(chuàng)建類(lèi)、定義數(shù)組、List、Map、Set類(lèi)型屬性,生成對(duì)應(yīng)set方法。
    public class Stu {private String[] courses;private List<String> list;private Map<String,String> maps;private Set<String> sets;public void setCourses(String[] courses){this.courses = courses;}public void setList(List<String> list){this.list = list;}public void setMaps(Map<String,String> maps){this.maps = maps;}public void setSets(Set<String> sets){this.sets = sets;}
    }
    
  • 在Spring配置文件進(jìn)行配置。
    <!-- 集合類(lèi)型屬性注入 -->
    <bean id="stu" class="zsh.shuzu.Stu"><!-- 數(shù)組類(lèi)型屬性注入 --><property name="courses"><array><value>java</value></array></property><!-- list類(lèi)型屬性注入,值是對(duì)象類(lèi)型 --><property name="list"><list><ref bean="course1"></ref><ref bean="course2"></ref></list></property><!-- Map類(lèi)型屬性注入 --><property name="maps"><map><entry key="JAVA" value="java"></entry></map></property><!-- Set類(lèi)型屬性注入 --><property name="sets"><set><value>MySql</value></set></property>
    </bean>
    <!--創(chuàng)建多個(gè)Course對(duì)象-->
    <bean id="course1" class="zsh.shuzu.Course"><property name="cname" value="Spring5框架"></property>
    </bean>
    <bean id="course2" class="zsh.shuzu.Course"><property name="cname" value="Mybatis框架"></property>
    </bean>
    
  • 把集合注入部分提取出來(lái)。
    • 在spring配置文件中引入名稱(chēng)空間util
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:util="http://www.springframework.org/schema/util"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    
    • 使用標(biāo)簽完成list集合注入提取
    <util:list id="bookList"><ref bean="course1"></ref>
    </util:list>
    <!-- list類(lèi)型屬性注入,值是對(duì)象 -->
    <property name="courseList" ref="bookList"></property>
    

注意:面試中會(huì)問(wèn)DI 和 IOC區(qū)別?
DI 是 IOC中一種具體實(shí)現(xiàn),就表示依賴(lài)注入(注入屬性),注入屬性需要在創(chuàng)建對(duì)象的基礎(chǔ)之上。

6. IOC操作Bean管理(FactoryBean)

Spring有兩種類(lèi)型bean,一種普通bean,另一種工廠bean(FactoryBean)

  • 普通bean:在配置文件中定義bean類(lèi)型就是返回類(lèi)型(上面的配置bean就是普通bean)
  • 工廠bean:在配置文件定義bean類(lèi)型可以和返回值類(lèi)型不一樣
    • 第一步:創(chuàng)建類(lèi),讓這個(gè)類(lèi)作為工廠bean,實(shí)現(xiàn)接口FactoryBean
    • 第二步:實(shí)現(xiàn)接口里面的方法,在實(shí)現(xiàn)的方法中定義返回的bean類(lèi)型
      public class MyBean implements FactoryBean<Course> {//定義返回bean@Overridepublic Course getObject() throws Exception {Course course = new Course();course.setCname("abc");return course;}@Overridepublic Class<?> getObjectType() {return null;}
      }
      

7、IOC操作Bean管理(bean作用域)

  • 在Spring里面,設(shè)置創(chuàng)建bean實(shí)例默認(rèn)為單實(shí)例對(duì)象
  • 如何設(shè)置單實(shí)例還是多實(shí)例?
    • 在spring配置文件bean標(biāo)簽里面有屬性(scope)用于設(shè)置scope屬性值:
      • 默認(rèn)值sigleton,表示單實(shí)例對(duì)象 ;
      • prototype,表示多實(shí)例對(duì)象。
    • 注意: sigleton和prototype區(qū)別?
      第一:sigleton單實(shí)例,prototype多實(shí)例
      第二:設(shè)置scope是sigleton時(shí)候,加載spring配置文件時(shí)候就會(huì)創(chuàng)建單實(shí)例對(duì)象。
      第三:設(shè)置scope是prototype時(shí)候,不是在加載spring配置文件時(shí)候創(chuàng)建對(duì)象,在調(diào)用getBean方法時(shí)候創(chuàng)建多實(shí)例對(duì)象。

8. IOCBean管理(bean生命周期)

  • 生命周期:從對(duì)象創(chuàng)建到對(duì)象銷(xiāo)毀的過(guò)程
  • bean生命周期五步(配置后置處理器七步)
    • 通過(guò)構(gòu)造器創(chuàng)建bean實(shí)例(無(wú)參數(shù)構(gòu)造)
    • 為bean的屬性設(shè)置值和對(duì)其它bean引用(調(diào)用set方法)
    • 調(diào)用bean的初始化的方法(需要進(jìn)行配置初始化的方法)
    • bean可以使用了(對(duì)象獲取到了)
    • 當(dāng)容器關(guān)閉時(shí)候,調(diào)用bean的銷(xiāo)毀的方法(需要進(jìn)行配置銷(xiāo)毀的方法)
<bean id="xxx" class="xxx" init-method="initMethod" destroy-method="destroyMethod">
  • bean的后置處理器,bean生命周期有七步(創(chuàng)建類(lèi)實(shí)現(xiàn)BeanPostProcessor并在xml配置成bean)
    • 把bean實(shí)例傳遞bean后置處理器的方法(調(diào)用類(lèi)的before)
    • 調(diào)用bean的初始化的方法(需要進(jìn)行配置初始化的方法)
    • 把bean實(shí)例傳遞bean后置處理器的方法(調(diào)用類(lèi)的after)

9. IOC操作Bean管理(xml自動(dòng)裝配)

  • 什么是自動(dòng)裝配?
    根據(jù)指定裝配規(guī)則(屬性名稱(chēng)或者屬性類(lèi)型),Spring自動(dòng)將匹配的屬性值進(jìn)行注入。
  • spring文件中配置(Emp中有Dept屬性)
<!--實(shí)現(xiàn)自動(dòng)裝配autowire屬性常用兩個(gè)值:byName根據(jù)屬性名稱(chēng)注入  注入bean的id值和類(lèi)的屬性名稱(chēng)一樣byType根據(jù)屬性類(lèi)型注入
-->
<bean id="emp" class="autowire.Emp" autowire="byName"></bean>
<bean id="dept" class="zsh.autowire.Dept"></bean>

10. IOC操作Bean管理(外部屬性文件)

  • 直接配置數(shù)據(jù)庫(kù)信息(不展示了)
  • 引入外部屬性文件配置數(shù)據(jù)庫(kù)連接池(德魯伊連接池)
<!-- 引入外部屬性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置連接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driverClassName}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property>
</bean>

11. IOC操作Bean管理(基于注解方式:簡(jiǎn)化xml配置)

  • Spring針對(duì)Bean管理中創(chuàng)建對(duì)象提供注解
    @Component(value=“”)
    @Service(value=“”)
    @Controller(value=“”)
    @Repository(value=“userDaoImp”)
    上面四個(gè)注解功能是一樣的,都可以用來(lái)創(chuàng)建bean實(shí)例
  • 基于注解方式實(shí)現(xiàn)對(duì)象創(chuàng)建
    • 第一步:引入aop依賴(lài)jar包
    • 第二步:開(kāi)啟組件掃描
      <!--1 如果掃描多個(gè)包,多個(gè)包使用逗號(hào)隔開(kāi) ;2.掃描包上層目錄--><context:component-scan base-package=""/>
      
    • 第三步:創(chuàng)建類(lèi),在類(lèi)上面添加創(chuàng)建對(duì)象注解
      注意:開(kāi)啟組件掃描細(xì)節(jié)配置
      <!--示例一use-default-filters="false  表示現(xiàn)在不使用默認(rèn)filter,自己配置filtercontext:include-filter  表示掃描包下Controller注解
      -->
      <context:component-scan base-package="com" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
      </context:component-scan><!-- 設(shè)置不去掃描哪些內(nèi)容 -->
      <context:component-scan base-package="com"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
      </context:component-scan>
      

12. 基于注解方式實(shí)現(xiàn)屬性注入

  • Spring提供的注解
    @AutoWired:根據(jù)屬性類(lèi)型進(jìn)行自動(dòng)裝配
    @Qualifier(value=“userDaoImp”):根據(jù)屬性名稱(chēng)進(jìn)行自動(dòng)裝配(和@Autowired一起使用)
    @Reaource(name=“userDaoImp”):可以根據(jù)類(lèi)型注入,也可以根據(jù)名稱(chēng)注入
    注意:此注解的包是javax中的,不是spring中的
    @Value:注入普通類(lèi)型屬性

13. 完全注解開(kāi)發(fā)

  • 創(chuàng)建配置類(lèi),替代xml配置文件
@Configuration  //配置類(lèi),替代xml配置文件@ComponentSean(basePackage={})   //包掃描public class SpringConfig{ 
}
  • 編寫(xiě)測(cè)試類(lèi)
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

在這里插入圖片描述

http://www.risenshineclean.com/news/50883.html

相關(guān)文章:

  • 重慶智能網(wǎng)站建設(shè)哪里好谷歌手機(jī)版瀏覽器官網(wǎng)
  • 做證明圖片的網(wǎng)站拉新app渠道
  • ppt模板下載官網(wǎng)外鏈seo
  • 最好的網(wǎng)站設(shè)計(jì)營(yíng)銷(xiāo)軟件app
  • 重慶外貿(mào)網(wǎng)站建設(shè)公司排名百度開(kāi)發(fā)者平臺(tái)
  • 杭州專(zhuān)業(yè)設(shè)計(jì)網(wǎng)站怎樣建網(wǎng)站
  • 有網(wǎng)站想修改里面的內(nèi)容怎么做發(fā)布平臺(tái)有哪些
  • 淄博網(wǎng)站設(shè)計(jì)丨致信網(wǎng)絡(luò)網(wǎng)絡(luò)銷(xiāo)售 市場(chǎng)推廣
  • wordpress導(dǎo)入b站視頻教程百度推廣登陸平臺(tái)登錄
  • java開(kāi)發(fā)工具下載海口網(wǎng)站關(guān)鍵詞優(yōu)化
  • 制作圖網(wǎng)站有哪些內(nèi)容百度文庫(kù)首頁(yè)官網(wǎng)
  • 旅游景點(diǎn)網(wǎng)頁(yè)設(shè)計(jì)百度移動(dòng)seo首選帝搜軟件
  • 濱州市城鄉(xiāng)建設(shè)部網(wǎng)站首頁(yè)網(wǎng)頁(yè)制作教程步驟
  • 網(wǎng)站二維碼鏈接怎么做的培訓(xùn)課
  • 樹(shù)莓派 做網(wǎng)站開(kāi)發(fā)定制軟件公司
  • 怎么才能百度做網(wǎng)站百度一下官網(wǎng)手機(jī)版
  • 網(wǎng)站title的作用怎樣做自己的網(wǎng)站
  • 網(wǎng)站空間怎么登陸網(wǎng)上推廣平臺(tái)有哪些
  • 江西網(wǎng)站建設(shè)哪家專(zhuān)業(yè)seo怎么做排名
  • 做傳銷(xiāo)網(wǎng)站違法什么是軟文營(yíng)銷(xiāo)?
  • h5 高端網(wǎng)站建設(shè)怎樣制作一個(gè)網(wǎng)站
  • 京山網(wǎng)站建設(shè)2345網(wǎng)址導(dǎo)航 中國(guó)最
  • 二手車(chē)網(wǎng)站源碼精準(zhǔn)信息預(yù)測(cè)
  • 做網(wǎng)站建設(shè)的銷(xiāo)售薪水搜索引擎排名優(yōu)化seo課后題
  • wordpress充值功能無(wú)錫整站百度快照優(yōu)化
  • 沈陽(yáng)房地產(chǎn)網(wǎng)站開(kāi)發(fā)服務(wù)營(yíng)銷(xiāo)策劃方案
  • 威海住房和城鄉(xiāng)建設(shè)局網(wǎng)站首頁(yè)搜索引擎營(yíng)銷(xiāo)簡(jiǎn)稱(chēng)seo
  • 太原制作網(wǎng)站的公司福建seo學(xué)校
  • 酒業(yè)公司網(wǎng)站模板bilibili官網(wǎng)網(wǎng)頁(yè)入口
  • 網(wǎng)站建設(shè)開(kāi)發(fā)合同指數(shù)是指什么