本文最后更新于:January 29, 2022 pm
Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力。Spring 框架不局限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。
目录 使用Java配置类来完全代替Spring的配置文件。
Java配置类 @Configuration 使用注解@Configuration,表示这是一个配置类,他相当于是xml配置文件。表示这个类会被注册到Spring容器中,因为这个注解本来就是一个@Component(点进去可以看见)。
例如:
package com.tothefor;import org.springframework.context.annotation.Configuration;@Configuration public class javaConfig { }
@Bean 使用注解@Bean表示一个bean,同xml配置文件中的一样。例如:
package com.tothefor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration public class javaConfig { @Bean public User getUser () { return new User(); } }
其中,
方法名:等同于xml配置文件中的bean标签的id属性。
返回值:等同于xml配置文件中的bean标签的class属性。
测试类 与使用xml配置文件中的测试不一样,这里是使用的AnnotationConfigApplicationContext。
public static void main (String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(javaConfig.class); User ur = (User) context.getBean("getUser" ); System.out.println(ur.getName()); }null
getBean中的值是java配置类中的方法名。如果写了一个在java配置类中没有的方法名则会报错。
而之所以输出null,是因为我们还没有注入属性。这里我们在User类中进行注入,:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package com.tothefor;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Component public class User { public String name; @Override public String toString () { return "User{" + "name='" + name + '\'' + '}' ; } public String getName () { return name; } @Value("loong") public void setName (String name) { this .name = name; } }
这样再运行测试类即可输出结果。其中的注解@Component表示这个类被注册到了Spring的容器中,Spring接管了。
@ComponentScan 扫描包。
package com.tothefor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration @ComponentScan("com.tothefor") public class javaConfig { @Bean public User getUser () { return new User(); } }
@Import 等同于xml配置文件中的:一个配置文件中引入其他配置文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package com.tothefor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;@Configuration @ComponentScan("com.tothefor") @Import(javaConfig2.class) public class javaConfig { @Bean public User getUser () { return new User(); } }
这种纯Java方式实现的配置,在SpringBoot比较常见。