Spring基于注解驱动开发

    科技2025-04-15  15

    Spring基于注解驱动开发

    基于xml的开发模式是需要使用spring-config.xml文件进行扫描配置,将一些Bean注入到spring容器中, 基于注解驱动开发是将想要注入的多个Bean在一个类中进行注入

    1.依赖导入

    <!--设置Spring依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.8.RELEASE</version> </dependency>

    2.类开发

    /** * 普通java类 */ public class ApplicationConfig { //在类上加@Bean注解可以实现将想要注册的Bean放在Spring容器中 //@Bean对应xml配置文件中的Bean标签 @Bean public String m1(){ return "m1"; } }

    通常在类的上面也会使用@Configuration注解,此注解的作用:

    明确表示该类是配置类使用此注解后spring容器会自动生成该类的代理对象(基于CGLib实现),并会扩展一些功能

    3.Bean使用

    因为使用的是注解形式,所以需要使用是实现了ApplicationContext接口的类 AnnotationConfigApplicationContext

    public class Demo1 { public static void main(String[] args) { //构造方法传入配置类 ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class); //Bean的名称默认是方法名 String m1 = context.getBean("m1", String.class); System.out.println(m1); } }

    4.给Bean起特定的名称

    在@Bean注解中使用name或者value属性 当仅设置名称时可以省略value

    @Configuration public class ApplicationConfig { //在类上加@Bean注解可以实现将想要注册的Bean放在Spring容器中 //@Bean对应xml配置文件中的Bean标签 @Bean("abc") public String m1(){ return "m1"; } }

    5.设置单例和每实例

    使用@Scope注解的,默认sington

    @Configuration public class ApplicationConfig { //默认是使用单实例,可以不加@Scope注解 @Scope() @Bean public Object obj(){ Object object = new Object(); return object; } } public class Demo1 { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class); Object obj = context.getBean("obj"); Object obj1 = context.getBean("obj"); System.out.println(obj==obj1); } }

    显示结果: 设置每实例prototype

    @Configuration public class ApplicationConfig { //默认是使用单实例 @Scope("prototype") @Bean public Object obj(){ Object object = new Object(); return object; } }

    显示结果:

    6.Bean生命周期方法

    注册到Spring容器中的Bean的生命周期方法

    Processed: 0.009, SQL: 8