第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

spring 學(xué)習(xí)(一):使用 intellijIDEA 創(chuàng)建 maven 工程進行 Spring ioc 測試

標簽:
Java

ioc 概念

控制反转(Inversion of Control,缩写为IOC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

IOC和DI区别

  • IOC: 控制反转,把对象创建交给spring进行配置

  • DI: 依赖注入,向类里面的属性中设置值

  • 关系:依赖注入不能单独存在,需要在ioc基础之上完成操作

创建 spring 实例进行 ioc 测试

我们使用 intellijIDEA 来完成这一操作,首先创建 maven 工程(maven提供了 java 中 jar 包的下载管理,方便我们使用下载和导入 jar 包,推荐使用)。打开 idea,选择 Create New Project, 在弹出来的窗口中选择创建 maven 工程,设置好 JDK 后点击 next 进行下一步。

5b794663000143c009850568.jpg

设置好 GrouId、ArtifactId、Version 后,按提示一路设置创建好 maven 项目。
5b7946630001fe1f09840567.jpg

我们修改 pom.xml 设置,配置需要添加下载的 jar 包:

 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

    </dependencies>

当我们修改pom.xml 文件时,idea 会提示我们导入,我们点击 Import Change即可,当然也可以设置Auto-Import自动导入:

5b7946630001ba5e04130112.jpg

我们在 src/main/java 下新建一个 package:cn.itcast.ioc, 并在 package 下新建 User.java:

package cn.itcast.ioc;public class User {    public void add(){
        System.out.println("add......");
    }    //public static void main(String[] args) {
        //原始做法
        //User user = new User();
        //user.add();
    //}}

在 resources目录下新建 applicationContext.xml 配置文件:

<?xml version="1.0" encoding="UTF-8"?><!-- scheme约束 --><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">
    <!-- ioc 入门 -->
    <bean id="user" class="cn.itcast.ioc.User"></bean></beans>

然后在 src/main/java 下创建测试文件 TestIOC.java ,尝试能否通过装载 bean,交由 spring 创建对象,通过配置文件输出 ioc 实例:

package cn.itcast.ioc;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestIOC {    @Test
    public void testUser(){        //1.加载 spring 配置文件,根据创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");        //2.得到配置创建的对象
        User user = (User) context.getBean("user");
        user.add();
    }
}

运行 TestIOC.java , 若控制台能输出 add() 方法,便测试成功。

5b7946630001253104520117.jpg

通过配置文件注入属性

介绍:创建对象时候,向类里面属性设置值。

在 spring 中我们一般采用通过set 方法注入。

举个栗子:

在 src/main/java/ 下创建 UserService.java:

package cn.itcast.ioc;public class UserService {    //1 定义 user 类型
    private User user;    //2 生成set 方法
    public void setUser(User user) {        this.user = user;
    }    public void add(){
        System.out.println("service....");
        user.add();
    }
}

修改 applicationContext.xml 文件:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       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"><!-- 注入对象类型 -->
    <!-- 配置 service 和 user 对象 -->
    <bean id="user" class="cn.itcast.ioc.User"></bean>
    <bean id="userService" class="cn.itcast.ioc.UserService">
        <!-- 注入 user 对象
                name 属性值, service 类里面的属性名称
                ref 属性, 配置bean 标签中 id 值
       -->
        <property name="user" ref="user"></property>
    </bean></beans>

修改 TestIOC.java:

package cn.itcast.ioc;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestIOC {    @Test
    public void testUser(){        //1.加载 spring 配置文件,根据创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");        //2.得到配置创建的对象
        UserService userService = (UserService) context.getBean("userService");
        userService.add();
    }
}

成功在控制台输出 UserService类的 add() 方法和注入的属性:

5b79466400016b0602920126.jpg

通过注解创建 ioc 实例

上述实例是通过配置 xml 文件来实现创建对象的功能,spring 也提供了另一种方式来实现上述功能:注解。

注解介绍

  • 代码里面特殊标记,使用注解可以完成功能

  • 注解写法 @注解名称(属性名称=属性值)

  • 注解使用在类上面,方法上面和属性上面

创建对象的四个注解

  • @Component

  • @Controller

  • @Service

  • @Repository

主要是通过 Component 衍生出 其他三个在web 层、业务层、持久层注解,主要是为了后续增强。但对我来说这四个注解功能目前来说是一样的,都是创建对象。

我们重新配置一下 applicationContext.xml 文件,引入新的约束,开启注解扫描:

<?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" 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"> <!-- bean definitions here -->

    <!-- 开启注解扫描
        (1) 到包里面扫描类,方法,属性上面是否有注解
    -->
    <context:component-scan base-package="cn.itcast.ioc"></context:component-scan>
    <!-- 扫描属性上面的注解 -->
    <!--<context:annotation-config></context:annotation-config>--></beans>

修改 User.java 文件:

package cn.itcast.ioc;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;@Service(value = "user")  //相当于<bean id="user" class=""/>@Scope(value = "prototype") //多实例public class User {    public void add(){
        System.out.println("add........");
    }
}

修改TestIOC.java:

package cn.itcast.ioc;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestIOC {    @Test
    public void testUser(){        //1.加载 spring 配置文件,根据创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");        //2.得到配置创建的对象,这里的getBean()方法中的 user 为User类通过注解的 value 值。
        User user = (User) context.getBean("user");
        user.add();
    }
}

控制台成功输入User 类的 add()方法:

5b7946630001253104520117.jpg

通过注解注入属性

同样的,我们可以通过使用注解注入属性。

这里有两种方式,我们可以通过使用 @Autowired(自动注入)或 @Resource(name="value")(name属性值:注解创建对象 value 值),推荐使用后一种。

注:使用注解不需要 set 方法。

还是举个栗子:

在 src/main/java/ 下创建 package 和 UserDao.java 和 UserService.java。

UserDao.java:

package cn.itcast.anno;import org.springframework.stereotype.Service;@Service(value = "userDao")public class UserDao {    public void add(){
        System.out.println("dao.........");
    }
}

UserService.java:

package cn.itcast.anno;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service(value = "userService")public class UserService {    //得到dao 对象
    //定义 dao 类型
    //方法一:在 dao属性上面使用注解,完成对象注入//    @Autowired//    private UserDao userDao;
    //使用注解不需要set 方法
    
    //方法二:
    //name属性值: 注解创建 dao对象 value 值
    @Resource(name = "userDao")    private UserDao userDao;    public void add(){
        System.out.println("service.......");
        userDao.add();
    }
}

使用上述 applicationContext.xml 中的注解配置,创建 TestAnno.java:

package cn.itcast.anno;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestAnno {    @Test
    public void TestService(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) context.getBean("userService");
        userService.add();
    }
}

运行 TestAnno.java ,控制台输出如下信息:

5b7946640001b3b603280133.jpg

总结:

  • 通过 spring框架的 ioc 容器,我们可以把对象的创建交给 spring 进行,降低代码的耦合度。

  • 在 spring 框架 ioc 容器装配 bean,可以通过配置 xml 文件和注解两种方式进行管理。

  • 掌握注入属性的两种方式:配置 xml 文件和注解。

  • 先创建对象,再注入属性。

原文出处:https://www.cnblogs.com/weixuqin/p/9498918.html

點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消