日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring 框架(一)

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 框架(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、spring簡介

二、spring入門

?三、spring配置文件

3.1.bean標簽的基本配置(applicationContext.xml)

3.2Bean(scope:指對象的作用范圍)標簽范圍配置?

3.3 Bean生命周期配置

3.4 Bean實例化三種方式

3.5 Bean的依賴注入入門

3.6?Bean的依賴注入的數據類型

3.7?引入其他配置文件(分模塊開發)

4.1 ApplicationContext的繼承體系

4.2?getBean()方法使用


一、spring簡介

1.Spring是什么

Spring是分層的 Java SE/EE應用 full-stack 輕量級開源框架,以 IoC(Inverse Of Control:反轉控制)和 AOP(Aspect Oriented Programming:面向切面編程)為內核。

提供了展現層 SpringMVC 和持久層 Spring JDBCTemplate 以及業務層事務管理等眾多的企業級應用技術 ,還能整合開源世界眾多著名的第三方框架和類庫,逐漸成為使用最多的Java EE 企業應用開源框架。

二、spring入門

1 導入 Spring 開發的基本包坐標

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.16</version><scope>compile</scope> </dependency>

2 編寫 Dao 接口和實現類

dao接口

public interface userDao {void save(); }

?dao實現類

public class userDaoImpl implements userDao {@Overridepublic void save() {System.out.println(" 你好");} }

3 創建 Spring 核心配置文件


4 在 Spring 配置文件中配置 UserDaoImpl

<?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="UserDao" class="com.study.dao.impl.userDaoImpl"></bean></beans>

5 使用 Spring 的 API 獲得 Bean 實例

public class DaoService{public static viod main(String[] a){ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao u=(userDao)app.getBean("userDao"); u.save(); }}

?三、spring配置文件

3.1.bean標簽的基本配置(applicationContext.xml)

用于配置對象交由Spring 來創建。 默認情況下它調用的是類中的無參構造函數,如果沒有無參構造函數則不能創建成功。

基本屬性:

  • ?id:? ? ? Bean實例在Spring容器中的唯一標識
  • class: Bean的全限定名稱
  • 3.2Bean(scope:指對象的作用范圍)標簽范圍配置?

    取值范圍

    說明

    Bean的實例化個數

    Bean的實例化時機:

    Bean的生命周期:

    singleton

    默認值,單例的

    1個

    當Spring核心文件被加載時,實例化配置的Bean實例

    ? 對象創建:當應用加載,創建容器時,對象就被創建了

    ? 對象運行:只要容器在,對象一直活著
    ? 對象銷毀:當應用卸載,銷毀容器時,對象就被銷毀了

    prototype

    多例的多個

    當調用getBean()方法時實例化Bean

    ? 對象創建:當使用對象時,創建新的對象實例
    ? 對象運行:只要對象在使用中,就一直活著
    ? 對象銷毀:當對象長時間不用時,被 Java 的垃圾回收器回收了

    request

    WEB 項目中,Spring 創建一個 Bean 的對象,將對象存入到 request 域中

    session

    WEB 項目中,Spring 創建一個 Bean

    的對象,將對象存入到 session 域中

    global session

    WEB 項目中,應用在 Portlet 環境,如果沒有 Portlet 環境那么globalSession 相當 于 session

    3.3 Bean生命周期配置

    ? init-method:指定類中的初始化方法名稱

    ? destroy-method:指定類中銷毀方法名稱

    3.4 Bean實例化三種方式

    ? 無參構造方法實例化

    之前演示的案例都是無參構造

    ? 工廠靜態方法實例化

    ?<bean id="UserDao" class="com.study.factory.factoryUserDao" factory-method="getUserDao" ></bean>

    ? 工廠實例方法實例化

    ?3.5 Bean的依賴注入入門

    依賴注入(Dependency Injection):它是 Spring 框架核心 IOC 的具體實現。

    ? 構造方法

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
    <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">

    <constructor-arg name="userDao" ref="userDao"></constructor-arg> </bean>

    ? set方法

    public class userServiceImpl implements userService {private userDao userDao;public void setUserDao(userDao userDao) {this.userDao = userDao;}@Overridepublic void inke() {userDao.save();} }

    <?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="UserDao" class="com.study.dao.impl.userDaoImpl" ></bean><bean id="Service" class="com.study.Service.impl.userServiceImpl"><property name="userDao" ref="UserDao"></property></bean></beans>

    ?如果覺得上面步驟太麻煩,也可以使用p標簽

    P命名空間注入本質也是set方法注入,但比起上述的set方法注入更加方便,主要體現在配置文件中

    xmlns:p="http://www.springframework.org/schema/p"

    <bean id="userService" class="com.itheima.service.impl.UserServiceImpl" p:userDao- ref="userDao"/>

    3.6?Bean的依賴注入的數據類型

    ? 普通數據類型

    public class UserDaoImpl implements UserDao { private String company; private int age; public void setCompany(String company) { this.company = company; } public void setAge(int age) { this.age = age; } public void save() { System.out.println(company+"==="+age); System.out.println("UserDao save method running...."); } } <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"><property name="company" value="華華"></property><property name="age" value="15"></property> </bean>

    ? 引用數據類型

    ? 集合數據類型

    public class UserDaoImpl implements UserDao {

    private List<String> strList;
    public void setStrList(List<String> strList) {

    ????????this.strList = strList; }

    public void save() {
    ????????System.out.println(strList); System.out.println("UserDao save method running....");

    } }

    <bean id="userDao" class="com.study.dao.impl.UserDaoImpl"><property name="strList"><list> <value>aaa</value> <value>bbb</value><value>ccc</value></list> </property> </bean>

    集合數據類型map注入

    public class UserDaoImpl implements UserDao {private Map<String,User> userMap;public void setUserMap(Map<String, User> userMap) {this.userMap = userMap; }public void save() {System.out.println(userMap); System.out.println("UserDao save method running....");}}

    <bean id="u1" class="com.study.domain.User"/> <bean id="u2" class="com.study.domain.User"/> <bean id="userDao" class="com.study.dao.impl.UserDaoImpl"> <property name="userMap"> <map><entry key="user1" value-ref="u1"/><entry key="user2" value-ref="u2"/></map> </property></bean>

    集合數據類型(Properties)的注入

    public class UserDaoImpl implements UserDao {private Properties properties;public void setProperties(Properties properties) {this.properties = properties; }public void save() {System.out.println(properties); System.out.println("UserDao save method running....");}} <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"><property name="properties"> <props><prop key="p1">aaa</prop> <prop key="p2">bbb</prop> <prop key="p3">ccc</prop> </props> </property> </bean>

    3.7?引入其他配置文件(分模塊開發)

    實際開發中,Spring的配置內容非常多,這就導致Spring配置很繁雜且體積很大,所以,可以將部分配置拆解到其他 配置文件中,而在Spring主配置文件通過import標簽進行加載

    <import resource="applicationContext-xxx.xml"/>

    <bean>標簽id屬性:在容器中Bean實例的唯一標識,不允 許重復class屬性:要實例化的Bean的全限定名,全包名scope屬性:Bean的作用范圍,常用是Singleton(默認)和prototype <property>標簽:屬性注入name屬性:屬性名稱 value屬性:注入的普通屬性值 ref屬性:注入的對象引用值 <list>標簽<map>標簽<properties>標簽<constructor-arg>標簽 <import>標簽:導入其他的Spring的分文件

    4.1 ApplicationContext的繼承體系

    1)ClassPathXmlApplicationContext

    它是從類的根路徑下加載配置文件 推薦使用這種

    2)FileSystemXmlApplicationContext

    它是從磁盤路徑上加載配置文件,配置文件可以在磁盤的任意位置。

    3)AnnotationConfigApplicationContext

    當使用注解配置容器對象時,需要使用此類來創建 spring 容器。它用來讀取注解。

    4.3 getBean()方法使用

    public Object getBean(String name) throws BeansException { assertBeanFactoryActive();
    return getBeanFactory().getBean(name);

    }

    public <T> T getBean(Class<T> requiredType) throws BeansException { assertBeanFactoryActive();
    return getBeanFactory().getBean(requiredType);

    }

    其中,當參數的數據類型是字符串時,表示根據Bean的id從容器中獲得Bean實例,返回是Object,需要強轉。 當參數的數據類型是Class類型時,表示根據類型從容器中匹配Bean實例,當容器中相同類型的Bean有多個時, 則此方法會報錯。

    也就是說,如果Bean 只有一個,可以使用第二個(不需要強轉),如果存在一個bean但是多次分類別使用使用第一個,用id區分,

    總結

    以上是生活随笔為你收集整理的spring 框架(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。