国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring 02 -Spring依賴注入+Spring注解開發(fā)

這篇具有很好參考價值的文章主要介紹了Spring 02 -Spring依賴注入+Spring注解開發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 依賴注入(DI)

依賴注入:在Spring創(chuàng)建對象的同時,為其屬性賦值,稱之為依賴注入。

1.1 set方法注入

創(chuàng)建對象時,Spring工廠會通過Set方法為對象的屬性賦值。

范例:定義一個Bean類型

public class User {
    private String name;
    private int age;
    private double money;
    private String hobby;
    private Date birthday;
    //省略set、get方法、構造方法
}

屬性注入

<!-- 依賴注入:使用set方法進行注入 user.setName("") user.setBirthday(new Date())-->
<bean id="user" class="com.ying.pojo.User">
    <!--   簡單類型注入(String+基本類型)     -->
    <property name="name" value="張三"/>
    <property name="age" value="10"/>
    <property name="hobby" value="打籃球"/>
    <property name="money" value="200.22"/>
    <!--   對象類型注入(String+基本類型)     -->
    <property name="birthday" ref="date"/>
</bean>
<bean id="date" class="java.util.Date">
    <property name="year" value="122"/>
</bean>

1.2 構造方法注入

范例:定義一個Bean類型 提供構造方法

public class User {
    private String name;
    private int age;
    private double money;
    private String hobby;
    private Date birthday;
    //省略set、get方法、構造方法
}

構造方法注入

<!-- 依賴注入:使用構造方法進行注入  User user = new User("cxk",30,3000,"打籃球",new Date())-->
<bean id="user1" class="com.ying.pojo.User">
    <!--  通過構造方法名注入       -->
    <!--        <constructor-arg name="name" value="李四"/>-->
    <!--        <constructor-arg name="age" value="20"/>-->
    <!--        <constructor-arg name="money" value="222.22"/>-->
    <!--        <constructor-arg name="hobby" value="跳"/>-->
    <!--        <constructor-arg name="birthday" ref="date"/>-->
    <!--  通過構造方法的參數類型注入      -->
    <!--        <constructor-arg type="java.lang.String" value="王五"/>-->
    <!--        <constructor-arg type="int" value="30"/>-->
    <!--        <constructor-arg type="double" value="333.33"/>-->
    <!--        <constructor-arg type="java.lang.String" value="唱"/>-->
    <!--        <constructor-arg type="java.util.Date" ref="date"/>-->
    <!--  通過構造方法的下標注入      -->
    <constructor-arg index="0" value="趙六"/>
    <constructor-arg index="1" value="60"/>
    <constructor-arg index="2" value="444.44"/>
    <constructor-arg index="3" value="rap"/>
    <constructor-arg index="4" ref="date"/>
</bean>

1.3 復雜類型注入

復雜類型指的是:list、set、map、array、properties等類型

定義復雜Bean類型

public class Person {
    private List<User> userList;
    private Map<String,String> map;
    private Set<String> set;
    private String[] arr;
    private Properties properties;
    //省略set、get方法、構造方法
}

給復雜類型注入屬性值

<bean id="person" class="com.ying.pojo.Person">
    <property name="userList">
        <list>
            <bean class="com.ying.pojo.User"></bean>
            <bean class="com.ying.pojo.User"></bean>
            <bean class="com.ying.pojo.User"></bean>
        </list>
    </property>
    <property name="set">
        <set>
            <value>1</value>
            <value>2</value>
            <value>3</value>
        </set>
    </property>
    <property name="arr">
        <array>
            <value>a</value>
            <value>b</value>
            <value>c</value>
        </array>
    </property>
    <property name="map">
        <map>
            <entry key="k1" value="v1"></entry>
            <entry key="k2" value="v2"></entry>
            <entry key="k3" value="v3"></entry>
        </map>
    </property>
    <property name="properties">
        <props>
            <prop key="driver">com.mysql.jdbc.Dirver</prop>
            <prop key="url">jdbc:mysql:///java2101</prop>
        </props>
    </property>
</bean>

1.4 自定義類型的注入

范例:在UserServiceImpl中注入UserDaoImpl類型的屬性

public class UserServiceImpl {
    private UserDaoImpl userDao;
    public void setUserDao(UserDaoImpl userDao) {
        this.userDao = userDao;
    }

    public void addUser(){
        userDao.addUser();
    }
}

<!--  屬性注入演示  -->
<!-- 創(chuàng)建UserDaoImpl對象    -->
<bean id="userDao" class="com.ying.dao.UserDaoImpl"></bean>
<!-- 創(chuàng)建UserServiceImpl對象    -->
<bean id="userService" class="com.ying.service.UserServiceImpl">
    <property name="userDao" ref="userDao"></property>
</bean>

2 依賴注入案例


Spring整合DBUtils實現(xiàn)JDBC開發(fā)

EmpServiceImpl

public class EmpServiceImpl {
    private EmpDaoImpl empDao;

    public void setEmpDao(EmpDaoImpl empDao) {
        this.empDao = empDao;
    }

    public List<Emp> getAll(){
        try {
            return empDao.getAll();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }
}

EmpDaoImpl

public class EmpDaoImpl {
    private QueryRunner queryRunner;

    public EmpDaoImpl(QueryRunner queryRunner) {
        this.queryRunner = queryRunner;
    }

    public List<Emp> getAll() throws SQLException {
        return queryRunner.query("select * from emp ",new BeanListHandler<Emp>(Emp.class));
    }
}

依賴注入配置

<!-- 使用Spring整合DBUtils工具類   -->
<!-- 創(chuàng)建EmpServiceImpl對象   -->
<bean id="empService" class="com.ying.service.EmpServiceImpl">
    <property name="empDao" ref="empDao"/>
</bean>
<!-- 創(chuàng)建EmpDaoImpl對象   -->
<bean id="empDao" class="com.ying.dao.EmpDaoImpl">
    <constructor-arg name="queryRunner" ref="queryRunner"></constructor-arg>
</bean>
<!-- 創(chuàng)建QueryRunner對象   -->
<bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner">
    <constructor-arg name="ds" ref="dataSource"/>
</bean>
<!-- 創(chuàng)建DruidDataSource對象   -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <!--   注入DruidDataSource連接池的配置信息     -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql:///java2101"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
    <!--        <property name="initialSize" value="40"/>-->
    <!--        <property name="maxActive" value="100"/>-->
    <!--        <property name="minIdle" value="20"/>-->
    <!--        <property name="maxWait" value="600000"/>-->
</bean>

測試

@Test
public void test05(){
    //創(chuàng)建Spring容器對象
    ApplicationContext ac =
        new ClassPathXmlApplicationContext("applicationContext.xml");
    EmpServiceImpl empService = ac.getBean("empService", EmpServiceImpl.class);
    List<Emp> empList = empService.getAll();
    empList.stream().forEach(System.out::println);
}

3 Spring注解開發(fā)

3.1 開啟注解掃描

<!--  開啟注解掃描  -->
<context:component-scan base-package="com.ying"/>

3.2 Component 注解

用于替換自建類型組件的 <bean…>標簽;可以更快速的聲明bean

@Component 注解的含義:創(chuàng)建類的對象,相當于xml中配置的bean標簽

  • @Controller 針對于控制器層的類的注解
  • @Service 針對于業(yè)務層的類的注解
  • @Repository 針對持久層的類的注解 Dao數據訪問層
@Component
//@Service("empService")
//@Controller("empService")
//@Repository("empService")
public class EmpServiceImpl implements EmpService{ 
}

3.3 Autowired注解 (開發(fā)常用 )

主要用于屬性注入,Spring

  • @Autowired 自動裝配:將對象屬性自動進行注入(類型注入)

  • @Qualifier(“empDaoImpl1”) 限定要自動注入的bean的id,一般和@Autowired聯(lián)用

注意:@Autowired先會按照類型注入,如果這個類有多個實例,那么再按照名稱注入,如果有多個實例那么需要使用Qualifier進行指定

@Component
public class EmpServiceImpl implements EmpService{
    @Autowired
    @Qualifier("empDaoImpl1")
    //@Resource(name="empDaoImpl2")
    private EmpDao empDao;
    public void addEmp(){
        empDao.addEmp();
    }
}

3.4 Resource注解

主要用于屬性注入,jdk

@Resource 自動裝配:將對象屬性自動進行注入(名稱注入)

注意:默認按照名稱進行裝配,如果找到指定的名稱則直接注入。如果沒有找到,那么再按類型稱注入,如果有多個實例那么需要使用name屬性進行指定文章來源地址http://www.zghlxwxcb.cn/news/detail-408342.html

@Component//@Controller   @Service  @Repository 
public class EmpServiceImpl implements EmpService{
    @Resource(name="empDaoImpl2")
    private EmpDao empDao;

    public void addEmp(){
        empDao.addEmp();
    }
}

到了這里,關于Spring 02 -Spring依賴注入+Spring注解開發(fā)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring-1-深入理解Spring XML中的依賴注入(DI):簡化Java應用程序開發(fā)

    Spring-1-深入理解Spring XML中的依賴注入(DI):簡化Java應用程序開發(fā)

    前兩篇文章我們介紹了什么是Spring,以及Spring的一些核心概念,并且快速快發(fā)一個Spring項目,以及詳細講解IOC,今天詳細介紹一些DI(依賴注入) 能夠配置setter方式注入屬性值 能夠配置構造方式注入屬性值 能夠理解什么是自動裝配 思考:向一個類中傳遞數據的方式有幾種?(給類

    2024年02月13日
    瀏覽(27)
  • quarkus依賴注入之三:用注解選擇注入bean

    quarkus依賴注入之三:用注解選擇注入bean

    這里分類和匯總了欣宸的全部原創(chuàng)(含配套源碼):https://github.com/zq2599/blog_demos 本文是《quarkus依賴注入》系列的第三篇,前文咱們掌握了創(chuàng)建bean的幾種方式,本篇趁熱打鐵,學習一個與創(chuàng)建bean有關的重要知識點:一個接口如果有多個實現(xiàn)類時,bean實例應該如何選擇其中的一個

    2024年02月14日
    瀏覽(22)
  • DAY02_Spring—第三方資源配置管理&Spring容器&Spring注解開發(fā)&Spring整合Mybatis和Junit

    DAY02_Spring—第三方資源配置管理&Spring容器&Spring注解開發(fā)&Spring整合Mybatis和Junit

    說明:以管理DataSource連接池對象為例講解第三方資源配置管理 問題導入 配置數據庫連接參數時,注入驅動類名是用driverClassName還是driver? 1.1 管理Druid連接池 數據庫準備 【第一步】添加Druid連接池依賴 注意:除了添加以上兩個依賴之外,別忘了添加spring-context依賴。 【第二

    2024年02月13日
    瀏覽(124)
  • DAY02_Spring第三方資源配置管理&Spring容器&Spring注解開發(fā)&Spring整合Mybatis和Junit

    DAY02_Spring第三方資源配置管理&Spring容器&Spring注解開發(fā)&Spring整合Mybatis和Junit

    說明:以管理DataSource連接池對象為例講解第三方資源配置管理 問題導入 配置數據庫連接參數時,注入驅動類名是用driverClassName還是driver? 1.1 管理Druid連接池 數據庫準備 【第一步】添加Druid連接池依賴 注意:除了添加以上兩個依賴之外,別忘了添加spring-context依賴。 【第二

    2024年02月14日
    瀏覽(105)
  • Spring IOC:詳解【依賴注入數值問題 & 依賴注入方式】

    Spring IOC:詳解【依賴注入數值問題 & 依賴注入方式】

    編譯軟件:IntelliJ IDEA 2019.2.4 x64 操作系統(tǒng):win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 spring版本:5.3.1 第一章:初識Spring:如何在Maven工程上搭建Spring框架? 第二章:Spring IOC:IOC在Spring底層中如何實現(xiàn)? 第三章:Spring IOC:詳解【依賴注入數值問題 依賴注入

    2024年02月04日
    瀏覽(17)
  • Spring DI簡介及依賴注入方式和依賴注入類型

    Spring DI簡介及依賴注入方式和依賴注入類型

    目錄 一、什么是依賴注入 二、依賴注入方式 1. Setter注入 2. 構造方法注入 3. 自動注入? 三、依賴注入類型 1. 注入bean類型 2. 注入基本數據類型 3. 注入List集合 4. 注入Set集合 5. 注入Map集合 6. 注入Properties對象 往期專欄文章相關導讀? 1. Maven系列專欄文章 2. Mybatis系列專欄文章

    2024年02月02日
    瀏覽(21)
  • spring——依賴注入原理及注入方式

    ??1.依賴注入(Dependency Injection,DI) 是一種設計模式和編程技術,其原理是將對象的依賴關系由外部容器來管理和注入。它的目的是解耦組件之間的依賴關系,提高代碼的靈活性、可維護性和可測試性。 ??2.依賴注入的原理 是通過在對象的構造函數、屬性或方法中注入所依

    2024年02月08日
    瀏覽(25)
  • Spring面試整理-Spring的依賴注入

    Spring框架的依賴注入(DI)是其核心功能之一,它允許對象定義它們依賴的其他對象,而不是自己創(chuàng)建或查找它們。這種機制促進了松耦合和更容易的測試。 依賴注入是一種設計模式,其中一個對象或方法提供另一個對象的依賴關系。在Spring中,這些依賴通常是服務、配置值

    2024年01月19日
    瀏覽(22)
  • Spring:泛型依賴注入

    Spring:泛型依賴注入

    泛型 :具有占位符(類型參數)的類、結構、接口和方法,通過 的方式定義了一個形式參數,在實例化時再指明具體類型 依賴注入 :IoC 的具體實現(xiàn),指對象之間的依賴關系在程序運行時由外部容器動態(tài)的注入依賴行為方式 泛型依賴注入 :在進行依賴注入的同時,使用泛型

    2024年02月15日
    瀏覽(22)
  • Spring 依賴注入詳解

    目錄 1、基于構造器的依賴注入 2、基于 Setter 方法的依賴注入 3、使用構造器注入還是 setter 方法注入? 4、依賴注入解析的過程 5、依賴注入的相關示例 // 依賴關系,指的就是對象之間的相互協(xié)作關系 ????????依賴注入(DI)是一個過程,在這個過程中,對象僅通過構造函

    2024年02月06日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包