Java框架 Spring Ioc

什么是Spring

Spring是Java企业级应用的开源开发框架 主要用来开发Java应用

Spring的作用

降低耦合 简化开发

有AOP编程的支持

声明式服务的支持

方便程序的测试

方便集成各种优秀框架

降低JavaEE API 的使用难度


Spring Ioc

IoC 控制反转

是Spring的一个核心思想,实现了将类实例化的时机以及细节交给Spring来管理。

DI 依赖注入

当一个对象创建时 它所依赖的属性和对象是由外部传递给他的 而非自己创建的(new)

依赖注入是控制反转的一种具体提现方式

Spring快速入门

1.创建Maven项目
2.pom.xml引入Spring相关依赖
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.29</version>
    </dependency>
3.创建BeanConfig
//通过配置类编写实现创建 将bean注入到spring容器中
public class BeanConfig {

    @Bean //bean的id为getPerson
    public Person getPerson() {
        Person person = new Person();
        person.setId(1);
        person.setName("zs");
        return person;
    }
}
4.创建测试类
public static void main(String[] args) {
        //创建IOC容器
        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(BeanConfig.class);
        //从容器中根据bean的id值获取bean
				Person person = ac.getBean(Person.class);
    }
oop设计原则

1.开放关闭原则

2.单一职责: 一个类只做一件事

3.依赖倒置: 上层(调用者)不应该依赖于下层(被调用者),而这应该依赖于抽象

4.接口隔离: 定义小的接口

5.米氏替换: 多态 所以父类出现的地方 都可以被子类替换

6.迪米特法则: "不要和陌生人说话" 代理

Spring Bean

<bean>的实例化方式

public class Person {
    private Integer id;
    private String name;
}
public class BeanConfig {
  
    @Bean
    public Person getPerson() {
        return new Person();
    }
}
public static void main(String[] args) {
    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(BeanConfig.class);
    Person person = ac.getBean(Person.class);
}

<bean>的属性注入

构造器注入
public class Person {
    private Integer id;
    private String name;
    
    public Person(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
}
public class BeanConfig {
  
    @Bean
    //@Scope("singleton")//单例  单例模式
  	//@Scope("prototype")//多例  原型模式
    //@Lazy 懒加载   bean工厂初始化不会创建对象,获取bean时候才会创建bean,策略模式 
    public Person getPerson() {
        return new Person(1, "codingfuture");
    }
}
public static void main(String[] args) {
    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(BeanConfig.class);
    Person person = ac.getBean(Person.class);
}
setter方法注入
public class Person {
    private Integer id;
    private String name;
    private Dog dog;
    //setter
}
public class Dog {
    private Integer id;
    private String name;
    //setter
}
public class BeanConfig {

    @Bean
    public Person getPerson(Dog dog1) {
        Person person = new Person();
        person.setId(1);
        person.setName("codingfuture");
        person.setDog(dog1);
        return person;
    }

    @Bean
    public Dog dog1(){
        Dog dog = new Dog();
        dog.setId(1);
        dog.setName("大黄");
        return dog;
    }

    @Bean
    public Dog dog2(){
        Dog dog = new Dog();
        dog.setId(2);
        dog.setName("小黄");
        return dog;
    }
}
public static void main(String[] args) {
    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(BeanConfig.class);
    Person person = ac.getBean(Person.class);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值