国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring筆記02_注解_IOC

smartlion / 3384人閱讀

摘要:約束的位置可以在約束的位置在中找到開啟注解掃描器在配置文件中開啟注解掃描器開啟注解掃描器包含自己以及自己下面的所有子包告知框架,在讀取配置文件,創(chuàng)建容器時(shí),依據(jù)注解創(chuàng)建對(duì)象,并存入容器中使用注解要?jiǎng)?chuàng)建對(duì)象,在類上使用注解。

1. Spring整合連接池 1.1 Spring整合C3P0

在工程中導(dǎo)入c3p0連接池需要的包c(diǎn)om.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

c3p0的硬編碼方式

@Test    //自己new對(duì)象,自己設(shè)置屬性
    public void test() throws Exception {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        //設(shè)置驅(qū)動(dòng)
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        //設(shè)置地址
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/hibernate");
        //設(shè)置用戶名
        dataSource.setUser("root");
        //設(shè)置密碼
        dataSource.setPassword("2626");
        //獲取鏈接池連接對(duì)象
        Connection con = dataSource.getConnection();
        System.out.println(con);
        //com.mchange.v2.c3p0.impl.NewProxyConnection@26ba2a48
    }

Spring整合c3p0連接池

配置文件


    
        
        
        
        
    

測(cè)試

@Test    //Spring的IOC+DI替代以上硬編碼的方式
    public void test2() throws SQLException {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) context.getBean("C3P0");
        Connection con = dataSource.getConnection();
        System.out.println(con);
        //com.mchange.v2.c3p0.impl.NewProxyConnection@52aa2946
    }

1.2 Spring整合DBCP

導(dǎo)入DBCP連接池需要的包c(diǎn)om.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar和com.springsource.org.apache.commons.pool-1.5.3.jar

DBCP硬編碼方式

@Test    //DBCP的硬編碼方式
    public void test3() throws SQLException {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate");
        dataSource.setUsername("root");
        dataSource.setPassword("2626");
        Connection con = dataSource.getConnection();
        System.out.println(con);
        //jdbc:mysql://localhost:3306/hibernate, UserName=root@localhost, MySQL-AB JDBC Driver
    }

Spring整合DBCP

配置文件


    
        
        
        
        
    

測(cè)試

@Test
    public void test4() throws SQLException {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) context.getBean("DBCP");
        Connection con = dataSource.getConnection();
        System.out.println(con);
        //jdbc:mysql://localhost:3306/hibernate, UserName=root@localhost, MySQL-AB JDBC Driver
    }

1.3 最終版

最終版使用propertie配置文件,Spring加載properties文件

Spring提供了一個(gè)標(biāo)簽可以加載外部的properties文件內(nèi)容

導(dǎo)入context的名稱空間和約束后,xml文件中才會(huì)有提示,這個(gè)約束在/spring-framework-4.2.4.RELEASE/docs/spring-framework-reference/html/xsd-configuration.html中可以找到


 

導(dǎo)入約束后配置xml



    
    
        
        
        
        
    

測(cè)試

@Test
    public void test4() throws SQLException {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) context.getBean("DBCP");
        Connection con = dataSource.getConnection();
        System.out.println(con);
        //jdbc:mysql://localhost:3306/hibernate, UserName=root@localhost, MySQL-AB JDBC Driver
    }

jdbc.properties配置文件可以配置不同的數(shù)據(jù)庫(kù),切換方便。

2. 基于注解的IOC配置

注解配置和xml配置要實(shí)現(xiàn)的功能都是一樣的,都是要降低程序間的耦合。只是配置形式不一樣。至于是使用xml還是注解,實(shí)際的開發(fā)過(guò)程中,每家公司有不同的習(xí)慣。

2.1 導(dǎo)包

拷貝必備包到lib目錄下。基于注解的配置中,需要加入一個(gè)aop的jar包。

2.2 配置文件

基于注解的配置文件,導(dǎo)入約束時(shí)需要多導(dǎo)入一個(gè)context名稱空間下的約束。約束的位置可以在約束的位置在:

? ..spring-framework-4.2.4.RELEASEdocsspring-framework-referencehtmlxsd-configuration.html中找到



2.3 開啟注解掃描器

在配置文件中開啟注解掃描器



        

告知Spring框架,在讀取配置文件,創(chuàng)建容器時(shí),依據(jù)注解創(chuàng)建對(duì)象,并存入容器中

2.4 使用注解

要?jiǎng)?chuàng)建UserDaoImpl對(duì)象,在類上使用@Component注解。只要定義在類上,那么注解掃描器只要一掃描到就會(huì)創(chuàng)建該類的實(shí)例對(duì)象,放入Spring容器中。

package com.itzhouq.daoImpl;

import org.springframework.stereotype.Component;

import com.itzhouq.dao.UserDao;

@Component("userDao")    //
public class UserDaoImpl implements UserDao{

    @Override
    public void save() {
        System.out.println("操作數(shù)據(jù)庫(kù),保存用戶的數(shù)據(jù)");
    }
}

要?jiǎng)?chuàng)建的對(duì)象UserServiceImpl,在類上使用注解,在屬性上使用注解

@value("屬性值"):定義在屬性字段上,針對(duì)的是基本數(shù)據(jù)類型和String類型。如果使用了這個(gè)注解,該屬性的set方法可以省略不寫。

@Autowired:定義在屬性字段上,針對(duì)的是對(duì)象類型。自動(dòng)按照類型注入,當(dāng)使用注解注入屬性時(shí),set方法可以省略。它只能注入其他bean類型。當(dāng)有多個(gè)類型匹配時(shí),使用要注解的對(duì)象變量名作為bean的id,在Spring容器查找,找到了也可以注入成功,找不到就報(bào)錯(cuò)。

@Qualifier("對(duì)象屬性id"):定義在屬性字段上。在自動(dòng)按照類型注入的基礎(chǔ)上,再按照Bean的id注入。他在給字段注入時(shí),不能獨(dú)立使用,必須和@Autowired一起使用。但是給方法參數(shù)注入時(shí),可以獨(dú)立使用。

package com.itzhouq.serviceImpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.itzhouq.dao.UserDao;
import com.itzhouq.daoImpl.UserDaoImpl;
import com.itzhouq.service.UserService;

@Component("userService")    //
public class UserServiceImpl implements UserService {
    @Value("要開始訪問(wèn)dao了")    //
    private String name;    //使用注解,可以不需要set方法,相當(dāng)于直接賦值
    
    @Autowired    //對(duì)象類型:自動(dòng)去Spring容器中找有沒(méi)有該類型(UserDao)的實(shí)例對(duì)象  如果有直接賦值
    @Qualifier("userDao")
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void save() {
        System.out.println(name);
        //調(diào)用dao
        userDao.save();
    }
}

測(cè)試

@Test
    public void test() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) context.getBean("userService");
        userService.save();
        //要開始訪問(wèn)dao了
        //操作數(shù)據(jù)庫(kù),保存用戶的數(shù)據(jù)
    }

2.5了解的幾個(gè)注解

@Scope("singleton") / @Scope("prototype"):定義在類上,用于指定該類是單實(shí)例還是多實(shí)例

一般action/web層為多實(shí)例,service和dao層為單實(shí)例

@PostConstruct:定義在方法上,用于配置初始化方法

@PreDestroy:定義在方法上,用于配置銷毀的方法

3. Spring整合JUnit

3.1 導(dǎo)入包

spring-aop-4.2.4.RELEASE.jar

spring-test-4.2.4.RELEASE.jar

junit.jar

3.2 編寫測(cè)試類
package com.itzhouq.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.itzhouq.service.UserService;

//1. 告訴Spring配置文件的位置
//2. 告訴Spring誰(shuí)去加載配置文件
@ContextConfiguration(value="classpath:applicationContext.xml")
@RunWith(value=SpringJUnit4ClassRunner.class)
public class SpringJunit {
    @Autowired
    private UserService userService;
    
    @Test
    public void test() {
        userService.save();
//        要開始訪問(wèn)dao了
//        操作數(shù)據(jù)庫(kù),保存用戶的數(shù)據(jù)
    }
}
3.3 注解

使用@RunWith注解替換原有運(yùn)行器

使用@ContextConfiguration指定spring配置文件的位置

使用@Autowired給測(cè)試類中的變量注入數(shù)據(jù)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74389.html

相關(guān)文章

  • Spring筆記01_下載_概述_監(jiān)聽器

    摘要:簡(jiǎn)單來(lái)說(shuō),是一個(gè)輕量級(jí)的控制反轉(zhuǎn)和面向切面的容器框架。變成的支持提供面向切面編程,可以方便的實(shí)現(xiàn)對(duì)程序進(jìn)行權(quán)限攔截,運(yùn)行監(jiān)控等功能。用于反射創(chuàng)建對(duì)象,默認(rèn)情況下調(diào)用無(wú)參構(gòu)造函數(shù)。指定對(duì)象的作用范圍。 1.Spring介紹 1.1 Spring概述 Spring是一個(gè)開源框架,Spring是于2003 年興起的一個(gè)輕量級(jí)的Java 開發(fā)框架,由Rod Johnson 在其著作Expert...

    reclay 評(píng)論0 收藏0
  • Spring注解專題系列

    摘要:用法先創(chuàng)建個(gè)組件,,,分別在類上加上注解。發(fā)現(xiàn)有一個(gè)屬性源碼注釋這樣說(shuō)的自動(dòng)檢測(cè)使用組件。在的方法中,表示不匹配,代表匹配。這就說(shuō)明使用注冊(cè)組件有種方式。 Spring注解應(yīng)用篇--IOC容器Bean組件注冊(cè) 這是Spring注解專題系類文章,本系類文章適合Spring入門者或者原理入門者,小編會(huì)在本系類文章下進(jìn)行企業(yè)級(jí)應(yīng)用實(shí)戰(zhàn)講解以及spring源碼跟進(jìn)。 環(huán)境準(zhǔn)備 編譯器IDEA...

    CocoaChina 評(píng)論0 收藏0
  • Spring框架學(xué)習(xí)筆記(一):官方文檔介紹,IoC與AOP概念學(xué)習(xí)

    摘要:構(gòu)造函數(shù)注入通過(guò)調(diào)用類的構(gòu)造函數(shù),將接口實(shí)現(xiàn)類通過(guò)構(gòu)造函數(shù)變量傳入。而在中,其使用橫切技術(shù),將這類代碼從原屬的封裝對(duì)象中提取出來(lái),封裝到一個(gè)可重用模塊中,稱為。 最近實(shí)習(xí)用到Spring的開發(fā)框架,但是之前沒(méi)有接觸過(guò),因此希望利用網(wǎng)上的資源來(lái)學(xué)習(xí)以下。 Spring官方給出了非常全面的介紹,非常適合我這種完全的小白……在這一系列學(xué)習(xí)中,我閱讀的主要資源是5.1.2 Reference ...

    mindwind 評(píng)論0 收藏0
  • Spring入門IOC和AOP學(xué)習(xí)筆記

    摘要:入門和學(xué)習(xí)筆記概述框架的核心有兩個(gè)容器作為超級(jí)大工廠,負(fù)責(zé)管理創(chuàng)建所有的對(duì)象,這些對(duì)象被稱為。中的一些術(shù)語(yǔ)切面切面組織多個(gè),放在切面中定義。 Spring入門IOC和AOP學(xué)習(xí)筆記 概述 Spring框架的核心有兩個(gè): Spring容器作為超級(jí)大工廠,負(fù)責(zé)管理、創(chuàng)建所有的Java對(duì)象,這些Java對(duì)象被稱為Bean。 Spring容器管理容器中Bean之間的依賴關(guān)系,使用一種叫做依賴...

    wenyiweb 評(píng)論0 收藏0
  • 慕課網(wǎng)_Spring入門篇》學(xué)習(xí)總結(jié)

    摘要:入門篇學(xué)習(xí)總結(jié)時(shí)間年月日星期三說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。主要的功能是日志記錄,性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等等。 《Spring入門篇》學(xué)習(xí)總結(jié) 時(shí)間:2017年1月18日星期三說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個(gè)人學(xué)習(xí)源碼:https://git...

    Ververica 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<