<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                一spring概念和ioc入門(ioc操作xml配置文件) 1)spring概念 1.spring核心兩部分 2.spring一站式框架 1.spring在javaee在三層結構中,每一層都提供不同的實現技術 Web是 springmvc Service層 spring的ioc dao層是spring的jdbcTemplete 3.spring版本 Spring 4.x 4.spring核心主要兩部分 aop面向切面編程,擴展功能不是修改源代碼實現 Ioc 控制反轉 為什么會有spring?他能給我們帶來什么樣的好處 比如一個類,在類里面有方法(不是靜態的方法),調用里面的方法創建對象 使用對象調用方法,創建類對象的過程,需要new出來對象 把對象的創建不是通過new方式實現,而是交給spring配置創建類的對象 2)spring的入門 1.ioc的原理 1.把對象的創建交給spring進行管理 2.ioc的注解方式 2.Ioc的底層原理實現的技術 1.xml配置文件 2.dom4j解決xml 3.工廠設計模式 4.反射 3.public class User{ Public void add(){.........} } //缺陷 耦合程度太高 使用工廠方法 Public class Factory{ Public static User getUser(){ Return new User(); } } // 還是耦合程度太高 思想:高內聚,低耦合 Ioc原理 Public class UserService{ } Public class UserServlet{ //得到UserSerivice的對象 //new 創建 } 第一步 創建xm配置文件,配置要創建 D對象類 1.<bean id=”userService” class=””></bean> 第二步:創建工廠類,使用dom4j解析配置文件,反射 Public class Userservice{ 1.//使用dom4j解析xml文件 //跟據id值 userSerivice得到id值對應的class屬性值 String classvluae=”class屬性值” //2.使用反射創建對象 Class clas=Class.forName(); UserSerivice service=clas.newInstance(); } 降低類與類之間的耦合度 第三步: 2.ioc的入門案例 第一步:引入jar包 做基本的功能需要bean context el core 第二步:創建類 在類里面創建一個方法 Public static class User(){ public void mian(String[] args){ } } 第三步:創建spring配置文件 配置創建對象 1.spring核心配置文件和位置不是固定 建議官方applicationContext.xml 2.引入約束 schem Doc-spring-framework-reference-html 最后一文件 從后往前找 3.配置 Id名字隨便器 Class 類的全路徑信息 package+class <bean id=”” class=””></bean> 第四步:寫段代碼測試類的創建 ApplicationContext context=new ClassPathXmlApplicationContext(“spring配置文件”) Context.getBean(“id值”); 3.解決配置文件沒有展示的問題 1.上網可以解決 2.復制約束的位置 Myeslipse--->屬性中--->xml c --add location “約束的文件位置” 3)spring的bean管理(xml配置文件) 1 bean實例化三種方式 1.在spring中通過配置文件的方式來創建 2.bean實例化三種方式實現 1.用無參數構造 2.使用靜態工廠,返回類對象 1.創建一個對和一個工廠等對象 <bean id=”xx” class=”靜態工廠的全路徑” factory-method=”靜態工廠返回對象的方法名稱”></bean> 3.使用事例工廠 1.創建不是靜態方法,返回對象 //創建工廠對象 <bean id=”xx” class=”工廠的全路徑” ></bean> //創建bean <bean id=”xxx” facoty-bean=”xx” factory-mothed=”事例工廠的名稱”></bean> 2.bean標簽常用的屬性 Id: 表示名稱 任意名字 Id 屬性值,不包含特殊的符號 Class:創建對象所在類的全路徑 Name:功能 id 屬性是一樣 Name屬性值 :可以包含特殊符號 Scope屬性(范圍): singleton 單例 默認 Prototype: 多實例對象 Request 創建對象request域中 Session 創建對象ssession域中 globalSession 創建對象 globalSession中跟單點登錄類似 3.屬性的注入方式介紹 創建對象的時候,向類里面的屬性設置值 第一種 set方法注入 例如 public class User(){ Private String name; Private void setName(String name){ This.name=name; } } 第二種 使用構造有參數的方法注入 第三種 使用接口注入 4.spring注入屬性(有參構造和set方法) 1.set方法注入 <bean id=”” class=””> //name 表示類中屬性的名稱 //value表示屬性的值 <porperty name=”” vlaue=””> </bean> 2.有參數的構造方法 <bean id=”” class=””> <constructor-arg name=”username” value=””> </constructor-arg> </bean> 5.spring注入對象類型屬性 1.通過屬性注入 sevice對象 <bean id=”” class=””> <porperty name=”” ref=”dao層對象”> </bean> 2.在serice創建dao對象 生成 set方法 6 p名存空間的注入 在一個標簽中不能寫多個相同的屬性 Xmlns:p=”http://www.spring-framework.org/schema/p” <--p名稱空間的注入-> <bean id=”” class=”” p:屬性的名字=””> 7 spring注入復雜的數據 有set完成注入 <bean id=”” class=””> 1.數組集合 name表示屬性的名字 <property name=””> <list> <value> ................... </list> </property> 2.lis集合 <property name=””> <list> <value> ................... </list> </property> 3.map集合 <property name=””> <map> <entry key=”” vlaue=””></emtry> ................... </map> </property> 4.配置文件Properties <property name=””> <props> <prop key=”driverclass”> com.mysql.jdbc.Driver</prop > ................... </props> </property> </bean> 4.ioc與di區別 1.ioc控制反轉,把對象創建交個spring 2.di依賴注入,向類里面的屬性中設置值 關系:使用依賴注入不能單獨存在,需要在ioc基礎之上完成操作 5.spring整合web 1.加載spring核心配置文件 2.服務啟動的時候完成配置加載配置文件和創建對象 3.實現原理 1ServletContext對象 2.監聽器 在服務器啟動的時候為每個項目創建的時候的生成一個 ServletContext對象,使用監聽器可以監聽到對象什么時候創建加載spring配置文件,把配置文件配置 對象創建交給服務器--把創建出來的對象放到servletContext域對象里面(setAttribute方法中)獲取對象的時候打到servletContext域得到(getAttribute() 二spring的ioc操作(注解)和aop概念() 1.spring的bean管理 1)使用注解創建對象 注解能用在社么地方 類 方法 屬性 注解配置的步驟 第一步:導入jar包四個加log4j 第二步:aop的jar包 第三步創建spring的配置文件引入約束 1.Ioc beans約束 2.spring ioc注解約束 context 開啟注解掃描 范圍:到包里面掃描類,方法,屬性上面是否有注解 base-package=”” 類所在的包 多個包可以用逗號也是用公共包 <context:component-scan base-package=””></context:component-scan> 第二種 開啟注解掃面 他只會掃面類上面的 <content:annotation-config></content:annotation-config> 創建對象 在類上面加入 @Compment(value=””) @Controller web層 @Sevice 業務層 @Repository 持久層 其實這個四個注解都是一樣 @Scope(value=”prototype”) //指定類是單實例還是多實例 2)使用注解注入屬性 第一步 創建service類 和dao類 第二步 在service中得到dao對象 無需提供set get方法 @Autowired 自動注入 底層值怎么找對象 是根據類名稱去找 然后返回該類所對應的類對象 @Resource(name=””) //注入的那對象 注解dao創建里面的value值 3)xml和注解方式的混合使用 1.創建對象使用配置文件的形式 2.注入屬性的用注解 @Resource(name=””) //配置文件中的id值 2 Aop 1)aop的概述 1>aop 面向切面編程 2>aop采用橫向抽取機制,取代了傳統 public class User{ Public void add(){ //添加邏輯 } } 功能 添加數據之后添加日志的功能 添加之后,記錄用戶什么時候添加了那個用戶 Public class BaseUser{ Public void write(){ } } Public class User extends BaseUser{ Public void add(){ //功能的擴展 //調用父類的方法實現日志的功能 在父類中中方法發生了改變子類中的方法也要發生改變 } } 2)aop的底層原理 Aop動態代碼方式實現 Public interface Dao{ Public void add(); } Pubic class DaoImpl implements Dao{ Public void add(){ //添加邏輯 //動態代理 不是真正的對象 是他的代理對象 // 實現的功能和原來一樣 } } //創建DaoImpl類平級類對象 這個對象不是真正的對象,代理對象實現的DaoImpl相同的功能 1.使用jdk動態,有接口的形式 第二種情況 沒有接口情況 Public class User{ Public void add(){ //使用的cglib動態代理,沒有接口的形式 } } //動態代理實現 創建User類的子類的代理對象 在子類里面調用父類的方法完成增強 3)aop操作相關的術語 Public class User{ Public void add(){} Public void update(){} Public void find(){} Public void delete(){} } 連接點:類里面那些方法可以被增強,這些方法稱為連接點 切入點:在類里面可以有很對的方法被增強,比如實際操作中,只是增強了類里面的add方法,和update方法,實際增強的方法稱為切入點 通知;增強:爭強的邏輯,稱為爭強,比如擴展日志的功能,這個日志 功稱為爭強 前置通知 在方法之前執行 后置通知 在方法之后執行 異常通知 方法異常執行 最終通知 在后置之后執行 環繞通知 在方法之前和方法之后執行 切面:把增強用到具體的方法上面,過程稱為切面 把增強加入到切入點上面 Introduction(引介)引介是一種特需的通知在不修改類的代碼前提下可以在 運行期為類動態的添加一些方法或屬性 Target(面標對象):代理的目標對象(要增強的類) Weaving(織入):把增強應用到目標的過程 把advice應到target的過程 Proxy(代理) 一個類被aop織入增強后,產生了一個結果代理類 3)spring的aop操作(基于acpectj的xml方式)2.1x 1.spring里面進行aop的操作,使用aspectj實現 Aspectj不是spring的一部分,和spring一起I使用進行aop操作 2.使用aspectj實現aop有兩種方式 1.基于aspectj的xml配置 2.基于aspectj的注解的配置 3.實現的準備工作 第一步:除了導入基本打jar包之外,還需要導入aop相關的jar包 1. Aopaliance-1.0.jar 2.aspectjweaver-1.8.7.jar 3.spring-aop-4.2.4.RELEASE.jar 4.spring-aspects-4.2.4.RELEASE.jar 第二步:創建spring的配置 1. 導入aop的約束 aop 2. 創建兩個類 <bean id=”” class=””></bean> <bean id=”” class=””></bean> <!--配置切入點-> <aop:config> <!-配置切入點--> expression=””表達式 需要被增強類的路徑 Execution(* 空格 類的路徑.*(..)) <aop:pointcut expression=”” id=”xx”/> <!-配置切面-> <aop:aspect ref=”z增強的類” > <aop:before method=”增強類方法的名字” pointcut-ref=”xx”> <aop:before> <aop:aspect> </aop:config> 注意在環繞通知類中的方法參數加入 <ProceedingJoinPoint> //需要加的前置通知 proceedingJoinPoint.proced(); //需要加入的后置通知 4)Log4j的介紹 1.log4j可以看淡程序運行過程中更詳細的信息 2.使用 1. 導入log4j的jar包 2.復制log4j的配置文件,復制到src下面 3.設置的日志的級別 5)Spring整合web項目 1.出現的問題 每次訪問action的時候,都會加載spring的配置文件 2.底層的使用監聽器,servletcontext對象 3.在spring里面不需要我們自己寫代碼實現,都幫我們封裝了 1.封裝了一個監聽器,我門只需要配置就行 2.導入spring整合web項目的jar包 1.spring-web <listener> <linstener-class> org.springframework.web.context.ContextLoderListerer </listener> <listener> 2.指定加載spring文件位置 默認到WEB-INF/applicationContext.xml <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:指定spring文件的位置</param-value> </context-param> 三jdbcTemplate和spring管理事務 1.基于aspectj的注解aop操作(會用) 第一步:創建對象 第二步:在spring aop的操作 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>> 第三步:在方法上面加載類的注解 在增強的類上面 @Aspectj 在方法上面 @Before 2.spring的jdbcTemplate的操作 1.spring框架是一站式框架 2.spring對不同的持久化層技術都進行了封裝jdbcTemplate對jdbc的封裝 JDBC org.springframework.jdbc.core.JdbcTemplate Hibernate5.0 org.springwork.orm.hibernate5.HibernateTemplate IBatis(MyBatis) org.springframework.orm.ibatis.SqlMapClientTemplate JPA org.springframework.orm.jpa.JpaTemplate 2.spring的jdbc的操作 3.導入jdbc相關的jar包 1.增加 第一步: 1.spring-jdbc-4.2.4.RELEASE.jar 2.spring-tx-4.2.4.RELEASE.jar 第二步:實現操作 //創建對象設置數據庫的信息 DriverManagerDataSource dataSource=new DriverManagerDataSource() 1.設置驅動 setDriverClassName(); 2.設置url setUrl() 3.設置用戶名 setUsername(); 4.設置密碼 setPassword(); //創建jdbcTemplate對象,設置數據庫的信息 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource) //調用jdbcTemplate對象里面的方法實現操作 String sql=”insert into user values(?,?)” jdbcTemplate.update(sql,參數的信息); 2.修改 1.與查詢前三步一樣的 String sql=”update user set password=? where username=?” jdbcTemplate.update(sql,參數的信息); 3.刪除 1.與查詢前三步一樣的 String sql=”delete user where usernname=?” jdbcTemplate.update(sql,參數的信息); 4.查詢 1.與查詢前三步一樣的 2.jdbcTemplate實現查詢,有接口RowMAPPER jdbcTempleate針對這個這個接口自己寫實現類 查詢返回某一個值 Strng sql=”select count(*) from User” queryForObject(String sql,Class requireType); 第一個是參數的sql語句 第二個參數,返回類型的class對象 查詢返回一個對象 String sql=”select * from User whrer username=?” queryforObject(Stirng sql,RowMapper<T> rowMapper,Object ..) 第一個參數是sql語句 第二個參數是RowMapper是接口,類似于dbutils里面的接口 第三個參數是sql語句中的注入的參數 Class MyRowMapper implements RowMapper<User>{ //該方法前面的操作都寫了 @Overide Public User mapRow(ResultSet rs,int num) throws SqlException{ //從結果集中獲取數據 num代表數據庫中有查詢出來幾條數據 Return user; } } 查詢返回一個集合 String sql=”select * from User” jdbcTemplate .query(sql ,new MyRowMapper()) 3spring配置連接池 1.配置c3p0的連接池 <bean id=”dataSource” class=”com.mchage.v2.c3p0.ComboPooledDataSource”> <property name=”driverClass” value=”com.mysql.jdbc.Driver”></property> <property name-”jdbcUrl” value=”jdbc:mysql:///數據庫的名稱”></property> <property name=”user” value=”root”></property> <property name=”password” value=”root”></property> </bean> //創建userSerivice對象 <bean id=”userService” class=””> <property name=”” ref=”userDao”> <property name=”jdbcTemplate” ref=”jdbcTemplate”></property> </property> </bean> //創建dao對象 <bean id=”userDao” class=””> </bean> //創建jabcTemplate <bean id=”jdbcTemplate” class=”org.springframework.jdbc.core.JdbcTemplate”> <property name=”dataSource” ref=”dataSource”><property> </bean> 2.service和dao的注入操作 4.spring的事務管理 1.事務的概念 1.什么是事務 2.事務特性 3.不考慮隔離性產生讀的問題 4.解決讀的問題 1.設置隔離級別 2.spring進行事務管理api 1.spring進行事務配置(聲明式) 基于xml配置文件 基于注解的方式 2.編程式事務管理 3.pring進行事務管理api 事務管理器PlatFormTransactionManger Spring為不同的特性的持久框架提供不同PlatFromTransactionManger接口的實現 org.springframework.jdbc.datesource.DataSourceTransactionManger 使用spring jdbc或iBatis進行持久化使用 Org.springframework.orm.hibernate5.Hibernate.TransactionManger 使用Hibernate5.0版本的進行持久化數據使用 Org.springframework.orm.jpa.Jpa.TransactionManger 使用JPA進行持久化使用 Org.springframework.jdo.jdo.ransactionManger 使用持久化機制是jdo Org.springframework。Transaction.jta.jtaTransactionManger 使用一個JPA實現管理事務,在一個事務跨越多個資源是必須使用 配置事務管理器 轉賬的操作 1.創建數據的表 2.創建一個serive和dao,完成操作 3.<bean id=”userSericie” class=””> <propery name=”userDao” ref=”userDao”></property> </bean> <bean id=”userDao” class=””> <property name=”jdbcTemplate” ref=”jdbcTemplate” ></property> </bean> <bean id=”jdbcTemplate” class=”org.springframework.jdbc.core.JdbcTemplate”> <property name=”dataSource” ref=”dataSource”><property> </bean> Dao層類的 Public class UserDao{ Private JdbcTemplate jdbcTemplate; //提供set方法 Public void lessMoney(){ //String sql=”update accout set salary=salary-? where username=?”; jdbcTemplate.update(sql,100,”小王”) } Public void moreMoney(){ //String sql=”update accout set salary=salary+? where username=?”; jdbcTemplate.update(sql,100,”小馬”) } } Serivice層 Public calss UserSerice{ //提供set方法 Private UserDao userDao; Public void transformAccount(){ userDao.lessMoney(); userDao.moreMoney(); } } 聲明是事物管理 aop tx 第一步:創建事物管理器 <bean id=”transactionManger” class=”org.springframework.jdbc.datesource.DataSourceTransactionManger”> <property name=”dataSource” ref=”dataSource”></property> </bean> 第二步:配置事務德增強 <tx:advice id=”txadvice” transation-manager=”transactionManger”> <tx:attribute> <tx:methd name=”account*” propagation=”REQUIREQ”> <tx:methd name=”inset*” propagation=”REQUIREQ”> </tx:attribute> </tx:advice > 第三步:配置切面 <aop:config> <aop:pointcut expression=”execution(* 包.*(..))” id=”pointcut1”> <aop:advisor advice-ref=”txadvice” pointcut-ref=”pointcut1”></aop:advisor> </aop:config> 注解式事務管理 第一步: 配置事務管理器 <bean id=”transactionManger” class=”org.springframework.jdbc.datesource.DataSourceTransactionManger”> <property name=”dataSource” ref=”dataSource”></property> </bean> 第二步 開啟事務管理器的注解 < tx:annotation-driven transaction-manager=”transactionManager” /> 第三步 在需要加載事務的方法上面添加注解 @Transactional 四ssh框架整合開發 SSH框架的三大框架的整合 1.struts2 2 hibernate5.x 3.spring4.x 回顧SSH框架知識點 Hibernate框架 1.hibrenate核心的配置文件 Orm思想 核心配置文件 1.數據庫的信息 2.hibernate信息 3.映射配置 4.hibernate核心配置文件 如果單純的使用hibernate框架,核心的配置文件名稱hibernate.cfg.xml 和位置的src下面 固定的 Hibernate和spring整和的時候,hibernate核心的配置文件的名稱和位置沒有固定的要求 2.hibernate映射文文件的 1.實體類和數據庫的映射關系使用orm思想 2.hibernate操作步驟 在spring框架對hibernate框架進行封裝的時候,HibernateTemplate Struts 2 1. Action操作 1)action創建的三種方式 繼承ActionSupport 2)配置actiion的訪問路徑 創建struts.xml的配置文件,這個文件名存和位置固定在src下面 3)配置訪問action的多個方法 使用通配符方法配置 4)在action獲取表單提交數據 獲取request對象 使用ServletActionContext類對象 --屬性的封裝 --模型的驅動 5) 在action操作域對象 使用ServletActionContext獲取域對象 6)配置struts2的過濾器 2.值棧 1.值棧存放數據 ---set方法 --push方法 ---定義變量,生成get方法 2.從值棧中獲取數據 在jsp中使用struts2標簽+ognl標簽 <s:property> <s:iterator> 3.攔截器 1.aop和責任鏈模式 2.自定義攔截器 --繼承MehtodFilterInterceptor 重寫類里面的方法 配置攔截器與action的關聯 Spring 框架 1.spring核心配置文件 1)名稱和位置文友固定的要求 2)在spring核心配置文件中引入schema約束 2.創建對象 1.xml配置的方式 2.注解的方式 3.使用ServletContext對象和監聽器實現 1.在服務器啟動的時候加載spring配置文件,創建對象 2.配置spring的監聽器 4.jdbcTempalte 5.事務的方法 Ssh整合的思想 web struts2: Service spring: dao hibernate: 兩個框架整合 Struct2框架和spring框架整合 1. 把Struct2 action對象的創建,交給spring管理 <bean id=” ” class=” ” scope=””> 2.導入整合的jar包 1.倒入spring的jar包 2.struts2-spring-plugin-2.3.24.jar Spring-web 3.spring這個web項目 4.strut2德jar把 3.創建spring中action 然后在struts2種 <spring中的id值> <action id=”userAcion” class=””><action> Spring和hibenate整合 把hibernate核心配置文件里面的數據庫的信息,直接寫到spring配置文件中 第一次方法的很慢,因為第一次訪問的時候創建sessionFactory對象 把sessionFactory對象的創建交給spring管理 在服務器啟動的時候創建sessionFactory對象 具體實現 第一步:導入hibernate的jar包 1.導入struts2和hibernate的jar包時候有jar的沖突問題 在struts2里面有jar包 Javassist-3.11.0GA.jar 2.在hienrate里面有jar Javassist-3.18.1-GA。Jar 刪除低版本 2導入spring整盒持久化層的框架需要導入的jar包 Spring-orm-- 第二步:spring里面鎮對上面情況,封裝類,配置類對象可以創建sessionFactory <bena id=”sessionFactory” class=”org.springframework.orm.hibernate5.LocalSessionFactoryBean”> <property name=”dataSource” ref=”dataSoruce”> </property> <property name=”configLocations”value=”classpath:hibernate.cfg.xml”></property> </bean> Spring分模塊開發 1.在spring里面配置多個內容,造成配置混亂,不利于維護 2.把spring核心配置文件中,一部分配置放到單獨的配置文件中在spring <引入其他的spring的配置文件 <import resource=”classpath:”/> Spring框架和hibernate整合
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看