美文网首页
6.Spring IoC练习

6.Spring IoC练习

作者: 蜜思1013 | 来源:发表于2019-03-04 21:25 被阅读0次

    1. 依赖注入和控制反转

    依赖注入和控制反转
    IoC是什么
    Ioc—InversionofControl,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

    2. IoC容器和bean

    Spring通过IoC容器来管理所有Java对象及其相互之间的依赖关系。
    IoC容器在创建bean的时候,会注入其依赖项。
    IoC的应用有以下两种设计模式:

    反射:在运行状态中,根据提供的类的路径或类名,通过反射来动态获取该类的所有属性和方法。
    通过反射实现IOC功能

    工厂模式:把IoC容器当做一个工厂,在配置文件或注解中给出定义,然后利用反射技术,根据给出的类名生成相应的对象。对象生成的代码及对象之间的依赖关系在配置文件中定义,实现了解耦。

    Spring IoC容器的核心基础包:

    • org.springframework.beans
    • org.springframework.context

    3. 配置和使用

    配置方式有:

    • xml形式
    <bean id = "..." class="...">
       <!-- 放置这个bean的协作者和配置 -->
    </bean>
    
    • 注解形式
    @Configuration
    public class AppConfig{
        @Bean
        public MyService myService(){
              return new MyServiceImpl();
       }
    }
    

    4. 注入方式

    • 构造器注入
    • setter注入

    5 .实战:依赖注入的例子

    • 消息服务接口和实现类
    public interface MessageService {
       String getMessage();
    }
    
    public class MessageServiceImpl implements MessageService {
        private String username;
        private int age;
    
        public MessageServiceImpl(String username, int age) {
            this.username = username;
            this.age = age;
        }
    
        @Override
        public String getMessage() {
            return "Hello World!" + "\nusername is " + username + ",age is " + age;
        }
    }
    
    • 打印器类
    public class MessagePrinter {
        final private MessageService messageService;
    
        public MessagePrinter(MessageService messageService) {
            this.messageService = messageService;
        }
    
        public void printMessage() {
            System.out.println(this.messageService.getMessage());
        }
    }
    
    • 配置文件
     <!--定义bean,并使用构造器注入-->
        <bean id="messageServiceImpl" class="com.spring.quickstart.MessageServiceImpl">
            <constructor-arg name="username" value="Tom"/>
            <constructor-arg name="age" value="20"/>
        </bean>
    
        <bean id="messagePrinter" class="com.spring.quickstart.MessagePrinter">
            <constructor-arg name="messageService" ref="messageServiceImpl"/>
        </bean>
    
    • 应用主类
    public class MessageApp {
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
            MessagePrinter messagePrinter = context.getBean(MessagePrinter.class);
            messagePrinter.printMessage();
        }
    }
    

    6 .依赖注入详细配置

    • 直接赋值
    • 引用其他bean
    • 内部bean
    • 集合
    • Null及空字符的值
    • xml短域名空间
    • 复合属性名称

    7. IoC综合练习:Boss、Car、Meeting

    • Car:brand、color、parameter


      image.png
    • Boss:name、company、car、hobby


      image.png
    • Meeting:theme、List<Boss>


      image.png

    相关文章

      网友评论

          本文标题:6.Spring IoC练习

          本文链接:https://www.haomeiwen.com/subject/ofywuqtx.html