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

當前位置: 首頁 > news >正文

網(wǎng)站點擊率如何做百度一下百度

網(wǎng)站點擊率如何做,百度一下百度,寧波汽車網(wǎng)站建設(shè),部門網(wǎng)站建設(shè)宗旨文章目錄 spring分層架構(gòu)表現(xiàn)層服務(wù)層(業(yè)務(wù)層)持久層 spring核心ioc(控制反轉(zhuǎn))1)**接下來是代碼示例:**2)**ioc容器的使用過程**3)ioc中的bean管理4)實例化bean的三種方式 aop(面向切面開發(fā)) 定…

文章目錄

    • spring分層架構(gòu)
      • 表現(xiàn)層
      • 服務(wù)層(業(yè)務(wù)層)
      • 持久層
    • spring核心
      • ioc(控制反轉(zhuǎn))
        • 1)**接下來是代碼示例:**
        • 2)**ioc容器的使用過程**
        • 3)ioc中的bean管理
        • 4)實例化bean的三種方式
      • aop(面向切面開發(fā))
    • 定義
    • 優(yōu)勢
    • AOP底層原理
    • AOP相關(guān)的術(shù)語
    • AOP入門
    • aop注解開發(fā)
    • aop純注解開發(fā)
      • Di(依賴注入)
        • 1)屬性的set方法注入值的方式
        • 2)構(gòu)造方法賦值的方法
      • 多配置文件
      • 多配置文件

spring分層架構(gòu)

  1. 表現(xiàn)層

    springmvc

  2. 服務(wù)層(業(yè)務(wù)層)

    spring ioc

  3. 持久層

    mybatis

    mybatis plus

    hibernite

互聯(lián)網(wǎng)項目,多ssm結(jié)構(gòu)

spring核心

  1. ioc(控制反轉(zhuǎn))

    ioc將對象的創(chuàng)建權(quán)利交給spring框架,底層實際上是使用反射實現(xiàn)的。降低程序的耦合度

    1)接下來是代碼示例:
    1. 創(chuàng)建一個空的maven項目

    2. 引入一些基本依賴

    <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
    
    1. 準備實體類

      // 創(chuàng)建一個接口
      public interface UserService {public void hello();
      }
      // 創(chuàng)建一個實體類
      public class UserServiceImpl implements UserService {@Overridepublic void hello() {System.out.println("Hello, world!");}
      }
    2. 準備配置文件

      <?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"><bean id="us" class="實體類的路徑"></bean>
      </beans>
      
    3. 在test中測試

      // 常規(guī)方法@Testpublic void testUser() {// TODO: write test cases for UserServiceUserService userService = new UserServiceImpl();userService.hello();}
      // 基于ioc容器管理的方法,ioc是一個map key是對象的標識,value是ioc創(chuàng)建的對象@Testpublic void run1() {// 創(chuàng)建spring ioc工廠ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");// 獲取beanUserService userService = (UserService) ac.getBean("us");userService.hello();}
      

    上面就是一個關(guān)于ioc容器的示例

    2)ioc容器的使用過程

    ApplicationContext接口,這個工廠接口,使用這個接口就可以獲得相應(yīng)的Bean對象,該對象下有兩個實現(xiàn)類

    1. ClassPathXmlApplicationContext:加載類路徑下的spring配置文件(常用)
    2. FileSystemXmlApplicationContext:加載本地磁盤下的spring配置文件(讓項目和配置文件分離管理,不常用)
    3)ioc中的bean管理
    1. id屬性:bean的別名,取名要求:必須要字母開頭,可以使用數(shù)字,連字符,下劃線,字母,不能出現(xiàn)特殊字符
    2. class屬性:bean對象的全路徑
    3. scope屬性: bean對象的作用范圍
      1. singleton:單例(默認)生命周期和配置文件一樣
      2. prototype:多例,不是加載配置文件時創(chuàng)建,而是在獲取實例對象時創(chuàng)建
      3. request: 多例,不常用,應(yīng)用于web項目中,每個請求都會創(chuàng)建一個新的實例對象
      4. session:多例,不常用,應(yīng)用于web項目中,向一個http session中共享一個實例
    4. init-method:bean對象創(chuàng)建時可以配置一個指定的方法自動調(diào)用
    5. destory-method:bean對象銷毀時可以配置一個指定的方并自動調(diào)用
    4)實例化bean的三種方式
    1. 默認是無參的構(gòu)造方法

          <bean id="us" class="實體類的路徑"></bean>
      
    2. 靜態(tài)工廠實例化方法(好處是可以自己編寫業(yè)務(wù)邏輯)

      準備一個靜態(tài)工廠類

      public class StaticFactory {public static UserService createUser() {// 編寫業(yè)務(wù)邏輯// ......return new UserServiceImpl();}
      }
      

      在xml配置文件中使用

          <bean id="us1" class="com.qc.util.StaticFactory" factory-method="createUser"></bean>
      
    3. 實例化工廠實例化方式

      準備一個可以實例化的類

      public class DFactory {public  UserService createUser() {// 編寫業(yè)務(wù)邏輯return new UserServiceImpl();}
      }
      

      在xml配置文件中使用

          <bean id="factory" class="com.qc.util.DFactory"></bean><bean id="us2" factory-bean="factory" factory-method="createUser"></bean>
      
  2. aop(面向切面開發(fā))

    定義

    ? 是一種編輯的范式,是OOP的延續(xù),也是Spring框架中函數(shù)編程的一種衍生范式,利用AOP可以對業(yè)務(wù)的各個部分進行隔離,從而似的業(yè)務(wù)邏輯各部分之間的耦合度降低,提高了程序的重用性,同時提高了開發(fā)的效率,AOP采用橫向抽取機制,取代了傳統(tǒng)縱向繼承體系。

    優(yōu)勢

    1. 運行期間,不修改源代碼的情況下,對已有的方法進行增強,減少重復(fù)代碼
    2. 提高開發(fā)效率
    3. 方便維護

    AOP底層原理

    1. 如果使用接口,則使用JDK動態(tài)代理技術(shù),如果沒有使用接口,使用的是繼承則是cglib代理

    AOP相關(guān)的術(shù)語

    1. Joinpoint(連接點)所謂連接點是指那些被連接到的點,在spring中,這些帶點指的是方法,因為spring只支持方法類型的節(jié)點
    2. Pointcut(切入點)所謂切入點是我們要對哪些Joinpoint進行攔截的定義
    3. Advice(通知\通知)所謂通知就是指,攔截到Joinpoint之后所要做的情況就就是通知,通知分為,前置通知,后置通知,異常通知,最終通知,環(huán)繞通知(切面類中要完成的功能)
    4. Target(目標對象)代理的目標對象
    5. Weaving(織入)是指把增強應(yīng)用到目標對象來創(chuàng)建新的代理對象的過程
    6. Proxy(代理)一個類被AOP織入增強后,就產(chǎn)生一個結(jié)果代理類
    7. Aspect(切面)是切入點+通知的結(jié)合,是自己編寫和配置

    AOP入門

    1. 導(dǎo)入坐標依賴

      <dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><!--Spring Aspects--><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.0.2.RELEASE</version></dependency><!--aspectj--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.3</version></dependency>
      
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"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
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd">
      </beans>
      
    2. 編寫spirng配置文件中AOP的配置部分

          <!--    bean管理--><bean id="us" class="com.qc.service.impl.UserServiceImpl"/><bean id="myAspect" class="com.qc.util.MyAspect"/><!--    配置aop--><aop:config><!--        配置切面--><aop:aspect ref="myAspect"><!--            前綴通知--><aop:before method="log1" pointcut="execution(public void com.qc.service.impl.UserServiceImpl.save())"/><!--            后置通知--><aop:after-returning method="log2"pointcut="execution(public void com.qc.service.impl.UserServiceImpl.save())"/><!--            異常通知--><aop:after-throwing method="log3"pointcut="execution(public void com.qc.service.impl.UserServiceImpl.save())"/><!--            最終通知--><aop:after method="log4"pointcut="execution(public void com.qc.service.impl.UserServiceImpl.save())"/><!--            環(huán)繞通知--><aop:around method="aroundLog"pointcut="execution(public void com.qc.service.impl.UserServiceImpl.save())"/></aop:aspect></aop:config>
      
      import org.aspectj.lang.ProceedingJoinPoint;public class MyAspect {// 自定義切面類 = 切入點+通知//通知public void log1() {System.out.println("前置增強的");}public void log2() {System.out.println("后置增強的");}public void log3() {System.out.println("異常增強的");}public void log4() {System.out.println("最終增強的");}public void aroundLog(ProceedingJoinPoint point) {try {log1();point.proceed(); // 目標方法調(diào)用log2();} catch (Throwable e) {e.printStackTrace();log3();} finally {log4();}}
      }
      

      注意環(huán)繞通知使用的接口

    通知類型

    1. 前置通知:目標方法執(zhí)行前進行增強
    2. 后置通知:目標方法執(zhí)行后進行增強
    3. 異常通知:目標方法出現(xiàn)異常后進行增強
    4. 最終通知:目標方法無論是否異常都進行增強
    5. 環(huán)繞通知:目標方法執(zhí)行前后,都進行增強,不過需要自己書寫

    切入點表達式

    • execution([修飾符] 返回值 包名.類名.方法名(參數(shù)))
    • 修飾符可以省略不寫
    • 返回值類型不能省略,根據(jù)方法來編寫返回值,可以用星號來代替
    • 包名類型方法名是不能省略的,但是可以用星號來代替,也可以部分代替
    • 參數(shù)如果是一個可以用星號來代替,如果是多個可以使用兩個點

    因此比較通用的表達式:

    execution( com.qc.*.Service.save(…))

    aop注解開發(fā)

    給切面添加@Aspect,編寫增強的方法,使用通知類型注解聲明

        <!--    開啟注解掃描--><context:component-scan base-package="com.qc"/><!--    開啟自動代理--><aop:aspectj-autoproxy/>
    
    @Aspect
    @Component
    public class MyAspect {// 自定義切面類 = 切入點+通知//通知@Before("execution(* com.qc.*.*.*ServiceImpl.save(..))")public void log1() {System.out.println("前置增強的");}@AfterReturning("execution(* com.qc.*.*.*ServiceImpl.save*(..))")public void log2() {System.out.println("后置增強的");}@AfterThrowing("execution(* com.qc.*.*.*ServiceImpl.save*(..))")public void log3() {System.out.println("異常增強的");}@After("execution(* com.qc.*.*.*ServiceImpl.save*(..))")public void log4() {System.out.println("最終增強的");}@Around("execution(* com.qc.*.*.*ServiceImpl.save*(..))")public void aroundLog(ProceedingJoinPoint point) {try {log1();point.proceed(); // 目標方法調(diào)用log2();} catch (Throwable e) {e.printStackTrace();log3();} finally {log4();}}
    }
    

    在每個方法上使用注解進行配置,和配置文件類似

    通知類型注解:

    1. @Before 前置注解
    2. @AfterReturning 后置注解
    3. @AfterThrowing 異常注解
    4. @After 最終注解
    5. @Round 環(huán)繞注解

    注意:在配置文件中開啟自動代理

    aop純注解開發(fā)

    @EnableAspectJAutoProxy 開啟自動代理

  3. Di(依賴注入)

    依賴注入:在spring框架負責創(chuàng)建bean對象時,動態(tài)的將對象注入到其他的bean對象中

    1)屬性的set方法注入值的方式
    1. 聲明變量并在需要依賴注入的地方設(shè)置set方法

    2. 在xml文件中配置該變量的值

          <bean id="us" class="com.qc.service.impl.UserServiceImpl"><property name="userDao" ref=""></property><property name="name" value=""></property></bean>
      

      參數(shù)說明:如果property中的是一個簡單類型(基本類型和字符串),那么就使用value,否則就使用ref

    2)構(gòu)造方法賦值的方法
    1. 在需要的地方添加構(gòu)造方法

    2. 在配置文件中使用帶參數(shù)的構(gòu)造方法傳參

          <bean id="userDao" class="com.qc.dao.impl.UserDaoImpl"></bean><bean id="us" class="com.qc.service.impl.UserServiceImpl"><constructor-arg name="userDao" ref="userDao"></constructor-arg></bean>
      
    3. 其他類型的參數(shù)傳參

      準備一個java類

      public class CollectionBean {private String[] strs;private List<String> list;private Map<String, String> map;private Properties properties;public Properties getProperties() {return properties;}public void setProperties(Properties properties) {this.properties = properties;}public Map<String, String> getMap() {return map;}public void setMap(Map<String, String> map) {this.map = map;}public String[] getStrs() {return strs;}public List<String> getList() {return list;}public void setList(List<String> list) {this.list = list;}public CollectionBean() {}public void setStrs(String[] strs) {this.strs = strs;}public CollectionBean(String[] strs) {this.strs = strs;}
      }
      
      1. 不可變數(shù)組

        <bean id="co" class="com.qc.service.CollectionBean"><property name="strs"><array><value>小美</value><value>小張</value><value>小王</value></array></property></bean>
        
      2. 可變集合

            <bean id="co" class="com.qc.service.CollectionBean"><property name="list"><list><value>張三</value><value>李四</value><value>王五</value></list></property></bean>
        
      3. map集合

        <bean id="co" class="com.qc.service.CollectionBean"><property name="map"><map><entry key="name" value="zhangsan"></entry><entry key="age" value="18"></entry></map></property></bean>
        
      4. 其他類型

          <bean id="co" class="com.qc.service.CollectionBean"><property name="properties"><props><prop key="username">zhangsan</prop><prop key="password">1234</prop></props></property></bean>
        
  4. 多配置文件

    1. 在配置文件中使用

      <import resource="applicationContext.xml"></import>
      
    2. 創(chuàng)建工廠時直接加載多個配置文件

              ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext1.xml");
      

?

                <props><prop key="username">zhangsan</prop><prop key="password">1234</prop></props></property></bean>```
  1. 多配置文件

    1. 在配置文件中使用

      <import resource="applicationContext.xml"></import>
      
    2. 創(chuàng)建工廠時直接加載多個配置文件

              ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext1.xml");
      

?

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

相關(guān)文章:

  • wordpress文章顯示小時分鐘天津seo推廣服務(wù)
  • 東莞網(wǎng)站如何制作google play官網(wǎng)入口
  • 網(wǎng)站會員注冊系統(tǒng)下載在線看seo網(wǎng)站
  • 做網(wǎng)站都需要用到什么百度網(wǎng)址大全怎么設(shè)為主頁
  • 九江做網(wǎng)站開發(fā)需要多少錢班級優(yōu)化大師網(wǎng)頁版登錄
  • 外貿(mào)網(wǎng)站用什么語言百度廣告推廣平臺
  • 實體門店管理系統(tǒng)武漢seo公司排名
  • 如何查看網(wǎng)站在哪里做的會計培訓(xùn)班有用嗎
  • 獲獎設(shè)計網(wǎng)站怎么做ppt
  • 做網(wǎng)站需要材料北京專業(yè)網(wǎng)站優(yōu)化
  • 怎樣在設(shè)計網(wǎng)站做圖賺錢嗎投稿平臺
  • 青島網(wǎng)絡(luò)推廣選哪家seo推廣宣傳
  • 成都設(shè)計研究院北京seo產(chǎn)品
  • 蘇州網(wǎng)頁服務(wù)開發(fā)與網(wǎng)站建設(shè)鳳凰網(wǎng)臺灣資訊
  • 阿里云注銷網(wǎng)站什么是長尾關(guān)鍵詞舉例
  • 權(quán)威的網(wǎng)站建設(shè)網(wǎng)絡(luò)銷售是做什么的
  • 南寧網(wǎng)站建設(shè) 南寧聯(lián)達億seo優(yōu)化網(wǎng)站源碼
  • 現(xiàn)在怎么做網(wǎng)絡(luò)營銷推廣方法網(wǎng)站的優(yōu)化seo
  • 北京 做網(wǎng)站 公司微信公眾號小程序怎么做
  • 注重網(wǎng)站內(nèi)容維護百度推廣賬號怎么申請
  • 電子產(chǎn)品營銷策劃書seo優(yōu)化易下拉霸屏
  • 重慶網(wǎng)絡(luò)網(wǎng)站推廣網(wǎng)絡(luò)營銷公司排行榜
  • 開通網(wǎng)站必須做域名空間營銷方法有哪些方式
  • 怎么更改網(wǎng)站域名搜索引擎推廣實訓(xùn)
  • 瀏陽做網(wǎng)站報價簡述如何優(yōu)化網(wǎng)站的方法
  • 網(wǎng)站越來越難做班級優(yōu)化大師免費下載
  • 常德投訴網(wǎng)站經(jīng)典品牌推廣文案
  • 做網(wǎng)站的語言智慧營銷系統(tǒng)平臺
  • 17zwd一起做業(yè)網(wǎng)站做網(wǎng)站的公司有哪些
  • 公明網(wǎng)站建設(shè)seo網(wǎng)站有優(yōu)化培訓(xùn)班嗎