好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Spring bean 四种注入方式详解

一、Set方式注入

pojo层:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

/**

  * @Author: crush

  * @Date: 2021-06-17 16:57

  * version 1.0

  * xml 配置注入版本  set 方式

  */

public class Student1 {

     public String name;

     public String school;

     public void setName(String name) {

         this .name = name;

     }

     public void setSchool(String school) {

         this .school = school;

     }

     @Override

     public String toString() {

         return "Student1{" +

                 "name='" + name + '\ '' +

                 ", school='" + school + '\ '' +

                 '}' ;

     }

}

1.xml 文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<? xml version = "1.0" encoding = "UTF-8" ?>

< beans xmlns = "http://HdhCmsTestspringframework.org/schema/beans"

        xmlns:xsi = "http://HdhCmsTestw3.org/2001/XMLSchema-instance"

        xsi:schemaLocation = "http://HdhCmsTestspringframework.org/schema/beans http://HdhCmsTestspringframework.org/schema/beans/spring-beans.xsd" >

     <!--set方式注入

         id是注入bean中的名字

         class 是全限定类名

         property 是按照set方式注入

     -->

     < bean id = "student1" class = "com.crush.pojo.Student1" >

         < property name = "name" value = "wyh1" />

         < property name = "school" value = "hngy1" />

     </ bean >

</ beans >

test测试

?

1

2

3

4

5

6

@Test

    public void student1(){

        ApplicationContext context = new ClassPathXmlApplicationContext( "student1.xml" );

        Student1 student1 = context.getBean( "student1" , Student1. class );

        System.out.println(student1);

    }

二、构造函数方式注入

pojo层

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

  * @Author: crush

  * @Date: 2021-06-17 17:02

  * version 1.0

  * xml 配置 构造函数方式注入

  */

public class Student2 {

     private String name;

     private String school;

     public Student2(String name, String school) {

         this .name = name;

         this .school = school;

     }

     @Override

     public String toString() {

         return "Student2{" +

                 "name='" + name + '\ '' +

                 ", school='" + school + '\ '' +

                 '}' ;

     }

}

2.xml文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<? xml version = "1.0" encoding = "UTF-8" ?>

< beans xmlns = "http://HdhCmsTestspringframework.org/schema/beans"

        xmlns:xsi = "http://HdhCmsTestw3.org/2001/XMLSchema-instance"

        xsi:schemaLocation = "http://HdhCmsTestspringframework.org/schema/beans http://HdhCmsTestspringframework.org/schema/beans/spring-beans.xsd" >

     <!--set方式注入

         id是注入bean中的名字

         class 是全限定类名

         constructor 是按照构造方式注入

         index 是按照成员变量在构造函数中的参数的第几个

         name 表示成员变量名

         type 表示类型

         value 表示值

         ref 表示引用 可引用另外一个注入到Spring的中的值

     -->

     < bean id = "student2" class = "com.crush.pojo.Student2" >

         < constructor-arg index = "0"   name = "name" type = "java.lang.String" value = "wyh2" />

         < constructor-arg name = "school" value = "hngy2" />

     </ bean >

</ beans >

test测试

?

1

2

3

4

5

6

@Test

  public void student2(){

      ApplicationContext context = new ClassPathXmlApplicationContext( "student2.xml" );

      Student2 student2 = context.getBean( "student2" , Student2. class );

      System.out.println(student2);

  }

三、注解注入

pojo层

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

/**

  * @Author: crush

  * @Date: 2021-06-17 17:08

  * version 1.0

  */

@Component

public class Student3 {

     @Value ( "wyh3" )

     private String name;

     @Value ( "hngy3" )

     private String school;

     @Override

     public String toString() {

         return "Student3{" +

                 "name='" + name + '\ '' +

                 ", school='" + school + '\ '' +

                 '}' ;

     }

}

3.xml文件

?

1

2

3

4

5

6

7

8

9

10

11

<? xml version = "1.0" encoding = "UTF-8" ?>

< beans xmlns = "http://HdhCmsTestspringframework.org/schema/beans"

        xmlns:xsi = "http://HdhCmsTestw3.org/2001/XMLSchema-instance"

        xmlns:context = "http://HdhCmsTestspringframework.org/schema/context"

        xsi:schemaLocation = "http://HdhCmsTestspringframework.org/schema/beans http://HdhCmsTestspringframework.org/schema/beans/spring-beans.xsd http://HdhCmsTestspringframework.org/schema/context https://HdhCmsTestspringframework.org/schema/context/spring-context.xsd" >

 

     <!--注解方式注入

         需要扫描注解在的包 注解才会生效

     -->

     < context:component-scan base-package = "com.crush.pojo" />

</ beans >

test测试

?

1

2

3

4

5

6

@Test

  public void student3(){

      ApplicationContext context = new ClassPathXmlApplicationContext( "student3.xml" );

      Student3 student3 = context.getBean( "student3" , Student3. class );

      System.out.println(student3);

  }

四、JavaConfig 方式注入

pojo层

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

/**

  * @Author: crush

  * @Date: 2021-06-17 17:16

  * version 1.0

  * JavaConfig 配置

  */

public class Student4 {

     @Value ( "wyh4" )

     private String name;

     @Value ( "hngy4" )

     private String school;

     @Override

     public String toString() {

         return "Student4{" +

                 "name='" + name + '\ '' +

                 ", school='" + school + '\ '' +

                 '}' ;

     }

}

JavaConfig 类

?

1

2

3

4

5

6

7

@Configuration

public class Student4Config {

     @Bean

     public Student4 student4(){

         return new Student4();

     }

}

xml文件 扫描包

?

1

2

3

4

5

6

7

<? xml version = "1.0" encoding = "UTF-8" ?>

< beans xmlns = "http://HdhCmsTestspringframework.org/schema/beans"

        xmlns:xsi = "http://HdhCmsTestw3.org/2001/XMLSchema-instance"

        xmlns:context = "http://HdhCmsTestspringframework.org/schema/context"

        xsi:schemaLocation = "http://HdhCmsTestspringframework.org/schema/beans http://HdhCmsTestspringframework.org/schema/beans/spring-beans.xsd http://HdhCmsTestspringframework.org/schema/context https://HdhCmsTestspringframework.org/schema/context/spring-context.xsd" >

     < context:component-scan base-package = "com.crush.config" />

</ beans >

测试:

?

1

2

3

4

5

6

@Test

public void student4(){

     ApplicationContext context = new ClassPathXmlApplicationContext( "student4.xml" );

     Student4 student4 = context.getBean( "student4" , Student4. class );

     System.out.println(student4);

}

五、Service层注入详解

service

?

1

2

3

4

5

6

7

8

9

/**

  * @Author: crush

  * @Date: 2021-06-17 17:27

  * version 1.0

  * xml 配置

  */

public interface StudentService1 {

     void test();

}

serviceImpl

?

1

2

3

4

5

6

7

8

9

10

11

12

/**

  * @Author: crush

  * @Date: 2021-06-17 17:29

  * version 1.0

  * xml 配置

  */

public class StudentService1Impl implements StudentService1{

     @Override

     public void test() {

         System.out.println( "===StudentDao1Impl===" );

     }

}

xml配置文件

?

1

2

3

4

5

6

<? xml version = "1.0" encoding = "UTF-8" ?>

< beans xmlns = "http://HdhCmsTestspringframework.org/schema/beans"

        xmlns:xsi = "http://HdhCmsTestw3.org/2001/XMLSchema-instance"

        xsi:schemaLocation = "http://HdhCmsTestspringframework.org/schema/beans http://HdhCmsTestspringframework.org/schema/beans/spring-beans.xsd" >

     < bean id = "studentService1" class = "com.crush.dao.StudentService1" />

</ beans >

总结

本篇文章就到这里了,希望能给你带来帮助,也希望能够您能够关注的更多内容!

原文链接:https://blog.csdn.net/weixin_45821811/article/details/118002025

查看更多关于Spring bean 四种注入方式详解的详细内容...

  阅读:14次