好得很程序员自学网

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

使用JavaConfig代替xml实现Spring配置操作

JavaConfig代替xml实现Spring配置

简单实体类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

package indi.stitch.pojo;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;

@Component

public class User {

     private String name;

     public String getName() {

         return name;

     }

     @Value ( "Stitch" )

     public void setName(String name) {

         this .name = name;

     }

     @Override

     public String toString() {

         return "User{" +

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

                 '}' ;

     }

}

@Component注解将实体类交给Spring容器托管,成为一个SpringBean组件

JavaConfig配置类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

package indi.stitch.config;

import indi.stitch.pojo.User;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

@Configuration

@ComponentScan ( "indi.stitch.pojo" )

public class BeanConfig {

     @Bean

     public User getUser() {

         return new User();

     }

}

@Configuration 注解代表这个类为Bean的配置类,相当于xml配置文件,本质上也是一个Component @ComponentScan 注解限定了配置类的扫描范围 @Bean 表示被注册的Bean,相当于xml配置文件中的bean标签

测试类

?

1

2

3

4

5

6

7

8

9

10

11

import indi.stitch.config.BeanConfig;

import indi.stitch.pojo.User;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {

     public static void main(String[] args) {

         ApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig. class );

         User user = context.getBean( "getUser" , User. class );

         System.out.println(user.getName());

     }

}

使用JavaConfig的方式实现配置,需要使用AnnotationConfigApplicationContext类通过传入配置类的字节码对象获取Spring配置上下文,在此上下文中可以获取被@Bean标签标记的Bean对象,传入的参数为被@Bean标签标记的方法的方法名。

测试结果

脱离xml用JavaConfig配置Spring

情况一

配置类中类名添加 @Configuration 注解,同时提供一个方法返回一个Bean实例,且这个方法添加注解 @Bean ,就可以由Spring管理此对象

如下所示:

User.java( Bean )

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public class User {

     private String name;

     public String getName() {

         return name;

     }

     @Value ( "Juyss" ) //注入name属性的值

     public void setName(String name) {

         this .name = name;

     }

     @Override

     public String toString() {

         return "User{" +

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

                 '}' ;

     }

}

SpringConfig.java( Java配置类 )

?

1

2

3

4

5

6

7

@Configuration //表明此类为Spring配置类

public class SpringConfig {

     @Bean //返回一个实例,注册为一个Bean由Spring管理

     public User getUser(){

         return new User();

     }

}

ConfTest.java(测试类)

?

1

2

3

4

5

6

7

8

public class ConfTest {

     @Test

     public void Test(){

         ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig. class );

         User user = context.getBean( "getUser" , User. class ); //第一个参数需与方法名一致

         System.out.println(user);

     }

}

测试类运行结果得到:

User{name='Juyss'}

情况二

配置类中类名上添加注解@Configuration表明为Spring配置类,添加注解@ComponentScan("ClassPath")表明扫描的包路径

然后在需要被Spring管理的Bean类名添加注解@Component

User.java ( Bean )

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@Component //表明这个类注册为Bean组件

public class User {

     private String name;

     public String getName() {

         return name;

     }

     @Value ( "Juyss" ) //注入name属性的值

     public void setName(String name) {

         this .name = name;

     }

     @Override

     public String toString() {

         return "User{" +

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

                 '}' ;

     }

}

SpringConfig.java ( Java配置类 )

?

1

2

3

4

5

6

7

8

9

10

11

12

13

@Configuration //表明为Spring配置类

@ComponentScan ( "com.juyss.pojo" ) //扫描此包下的所有已注册的Bean

public class SpringConfig {

}

ConfTest.java ( 测试类 )

public class ConfTest {

     @Test

     public void Test(){

         ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig. class );

         User user = context.getBean( "user" , User. class ); //第一个参数为类名首字母小写

         System.out.println(user);

     }

}

测试类运行结果得到:

User{name='Juyss'}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/qq_39209361/article/details/115362894

查看更多关于使用JavaConfig代替xml实现Spring配置操作的详细内容...

  阅读:19次