初识Spring框架,IoC容器基本原理及定义

初识Spring框架,IoC容器基本原理及定义

Spring 简介:
轻量级框架,javaEE的春天,当前主流框架
“一站式”的企业应用开发框架
Spring内容:
IoC容器
AOP实现
数据访问支持
简化JDBC/ORM框架
声明式事务
Web集成

Spring设计理念
Spring是面向Bean的编程
Spring两大核心技术
控制反转(IoC:Inversion of Control)/依赖注入(DI: Dependency Injection)
面向切面编程(AOP:Aspect Oriented Programming)

Spring的优点:
低侵入式设计
独立于各种应用服务器
依赖注入特性将组件关系透明化,降低了耦合度
面向切面编程特性允许将通用任务进行集中式处理
与第三方框架的良好整合

IoC的定义和原理
什么是控制反转:
将组件对象的控制权从代码本身转移到外部容器
组件化的思想:分离关注点,使用接口,不再关注实现

工厂模式:返回根据我们提供的我们所需的对象实例的描述,为我们返回所需要的产品
1.产品的规范
2.产品
3.工厂
4.客户端/调用者

定义IoC的步骤
1.导入jar包
所用jar包

2.创建主类

package demo;

/**
 * 第一个Spring,输出“Hello,Spring!”
 * @author Bryce
 *
 */
public class HelloSpring {
    //定义who属性,该属性的值将通过Spring框架进行设置
    private String who = null;
    /**
     * 定义打印方法,输出一句完整的问候
     */
    public void print(){
        System.out.println("Hello," + this.getWho() + "!");
    }

    /**
     * 获取who
     * @return who
     */
    public String getWho() {
        return who;
    }
    public void setWho(String who) {
        this.who = who;
    }



}

3.配置日志文件,为项目添加log4j.propertices文件

# rootLogger是所有日志的根日志,修改该日志属性将对所有日志起作用
# 下面的属性配置中,所有日志的输出级别是info,输出源是con
log4j.rootLogger=info,con
# 定义输出源的输出位置是控制台
log4j.appender.con=org.apache.log4j.ConsoleAppender
# 定义输出日志的布局采用的类
log4j.appender.con.layout=org.apache.log4j.PatternLayout
# 定义日志输出布局
log4j.appender.con.layout.ConversionPattern=%d{MM-dd HH:mm:ss}[%p]%c%n -%m%n

4.编写Spring配置文件(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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
    <!-- 通过bean元素声明需要Spring创建的实例。该实例的类型通过class属性指定,并通过id属性为该实例指定一个名称,以便在程序中使用 -->
    <bean id="helloSpring" class="cn.springdemo.HelloSpring">
        <!-- property元素用来为实例的属性赋值,此处实际是调用setWho()方法实现赋值操作 -->
        <property name="who">
            <!-- 此处将字符串"Spring"赋值给who属性 -->
            <value>Spring</value>
        </property>
    </bean>
</beans>

5.测试

package test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import demo;

public class HelloSpringTest {

    @Test
    public void helloSpring() {
        // 通过ClassPathXmlApplicationContext实例化Spring的上下文
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        // 通过ApplicationContext的getBean()方法,根据id来获取bean的实例
        HelloSpring helloSpring = (HelloSpring) context.getBean("helloSpring");
        // 执行print()方法
        helloSpring.print();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值