자바 기반 Spring 5 의 핵심 중 하나 인 IOC 용기

9133 단어 JavaSpring5IOC 용기
IOC
1)반전 을 제어 하고 생 성 대상 과 대상 의 호출 과정 을 Spring 관리 에 맡 깁 니 다.
2)결합 도 를 낮 추기 위해 IOC 를 사용 하 는 목적.
2.IOC 의 바 텀 원리
XML 해석,공장 모드,반사
IOC底层原理
IOC 사상
IOC 용기 완성 에 따라 IOC 용기 밑바닥 이 대상 공장 이다.
4.Spring 은 IOC 용 기 를 제공 하여 두 가지 방식 을 실현 합 니 다.(두 개의 인터페이스)
(1)BeanFactory:IOC 용 기 는 기본적으로 구현 되 며 Spring 내부 의 사용 인터페이스 로 개발 자 에 게 사용 되 지 않 습 니 다.
특징:프로필 을 불 러 올 때 대상 을 만 들 지 않 고 대상 을 가 져 와 서 만 듭 니 다.
(2)ApplicationContext:BeanFactory 인터페이스의 하위 인터페이스.개발 자 사용 제공
특징:프로필 을 불 러 올 때 대상 만 들 기
5.IOC 작업 의 Bean 관리
1.빈 관리 란 무엇 인가:
Bean 관 리 는 두 가지 조작 을 말 합 니 다.
Spring 생 성 대상
Spring 주입 값:수 동 주입,자동 조립

<!--    、    
    bean     autowire  :
           :byName:         ,id               
              byType:          。
-->
<bean id="employee" class="tianfei.Spring5.autowire.Employee" autowire="byType">
    <!--    -->
    <!--<property name="dept" ref="dept"></property>-->
</bean>
2.IOC 작업 의 Bean 관리 두 가지 방식
1)XML 기반 설정 파일 방식:
먼저 User 클래스 를 만 듭 니 다:

public class User {
    
        private Integer id;
        private String name;
    
        public User() {
        }
    
        public User(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
XML 프로필 에 User 대상 설정:

<!--1、  User  
       id:        ,   
       class:      
  -->
<bean id="user" class="tianfei.Spring5.User">
    <!--2、  set      
              property    
                 name :      
                 value :         
    -->
    <property name="id" value="1"></property>
    <property name="name" value="  "></property>

    <!--          -->
    <constructor-arg name="id" value="2"></constructor-arg>
    <constructor-arg name="name" value="  "></constructor-arg>

    <!--  p        
            ,  xml       :xmlns:p="http://www.springframework.org/schema/p"
    -->
    <bean id="user" class="tianfei.Spring5.User" p:id="1" p:name="  "></bean>
</bean>
테스트 클래스:

public class testDemo {
    @Test
    public void test() {
        //1、  Spring5  xml    
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

        //2、         
        User user = context.getBean("usera", User.class);

        System.out.println(user);
    }
}
추가:XML 프로필 에 외부 파일 도입(jdbc.properties 로)

<!--        jdbc.properties
                 :xmlns:context="http://www.springframework.org/schema/context"
    -->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
        <property name="driverClassName" value="${prop.driverClassName}"></property>
        <property name="url" value="${prop.url}"></property>
        <property name="username" value="${prop.username}"></property>
        <property name="password" value="${prop.password}"></property>
    </bean>
jdbc.properties 프로필 내용 은 다음 과 같 습 니 다.

prop.driverClassName=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/userdb
prop.username=root
prop.password=tianfei
2)주석 기반 방식(UserDao 인터페이스 및 실제 클래스 와 UserService 클래스 를 예 로 들 면)

public interface UserDao {
          public void add();
    }
        @Controller(value = "userDaoImpl")
    public class UserDaoImpl implements UserDao {
    
        @Override
        public void add() {
            System.out.println("userdao add.......");
        }
    
        public UserDaoImpl() {
        }
    }

//value      ,                           
@Service(value = "userService")
public class UserService {
    //            
    @Value(value = "abc")
    private String str;

    //           
//    @Autowired  //      
//    @Qualifier(value = "userDaoImpl")  //           Autowired     
//    private UserDao userDao;

//    @Resource   //      
    @Resource(name = "userDaoImpl")  //      
    private UserDao userDao;

    public void add() {
        System.out.println("service add........");
        userDao.add();
    }

    public void test() {
        System.out.println("userDao = " + userDao);
        System.out.println(str);
    }
}
테스트 클래스:

public class test {
    @Test
    public void test1(){
        //          
        //   mxl       :<context:component-scan base-package="tianfei.Spring5"></context:component-scan> ,         
        //     set  
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

        UserService userService = context.getBean("userService", UserService.class);

        System.out.println(userService);
        userService.add();
        userService.test();
    }
    @Test
    public void test2(){
        //          
        //     set  
        //      
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

        UserService userService = context.getBean("userService", UserService.class);

        System.out.println(userService);
        userService.add();
        userService.test();
    }
}
완전 주 해 를 사용 할 때 설정 클래스 로 클래스 를 만들어 야 합 니 다:

@Configuration      //     ,  xml    ,        
@ComponentScan(value = {"tianfei.Spring5"})
public class SpringConfig {
}
3.IOC 조작 Bean 관리(공장 Bean)
Spring 에는 두 가지 Bean 이 있 습 니 다.
1)일반 Bean:설정 파일 에서 bean 형식 을 정의 하면 반환 값 형식 입 니 다.
2)공장 빈:설정 파일 에서 bean 형식 과 반환 값 형식 을 다 르 게 정의 할 수 있 습 니 다.
첫 번 째 단계:하나의 클래스 를 만 들 고 공장 bean 으로서 인터페이스 Factory Bean 을 실현 합 니 다.
두 번 째 단계:인터페이스 에서 얻 은 방법 을 실현 하고 실현 하 는 방법 에서 되 돌아 오 는 bean 유형 을 정의 합 니 다.

 public class MyBean implements FactoryBean<User> {

    //        (                )
    @Override
    public User getObject() throws Exception {
        return new User(1,"  ");
    }

    @Override
    public Class<?> getObjectType() {
        return null;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
}
MyBean.xml 파일 추가:

<!--      -->
<bean id="myBean" class="tianfei.Spring5.factorybean.MyBean"></bean>
테스트 클래스:

   public class test {

    @Test
    public void testMyBean() {
        //   FactoryBean   
        ApplicationContext context = new ClassPathXmlApplicationContext("MyBean.xml");

        Book book = context.getBean("myBean",Book.class);
        System.out.println(book);
    }
}
4.Bean 의 수명 주기(프로세서 추가 후 총 7 단계):
(1)무 참 구조 기 를 통 해 bean 인 스 턴 스 만 들 기(무 참 구조)
(2)bean 의 속성 에 값 을 주입 하거나 다른 bean(set 방법)을 참조 합 니 다.
(3)bean 인 스 턴 스 를 bean 에 전달 한 후 프로세서 방법 post ProcessBeforeInitialization
(4)bean 의 초기 화 방법 을 호출 합 니 다(자체 설정 초기 화 방법 이 필요 합 니 다)
(5)bean 인 스 턴 스 를 bean 백 엔 드 프로세서 방법 post Process After Initialization 에 전달 합 니 다.
(6)bean 인 스 턴 스 대상 가 져 오기
(7)용기 가 닫 혔 을 때 bean 의 소각 방법 을 호출 합 니 다(자체 적 으로 소각 방법 을 설정 해 야 합 니 다)
자바 기반 의 Spring 5 의 핵심 중 하나 인 IOC 용기 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 Spring 5 의 핵심 IOC 용기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기