spring手把手配置讲解(基于javaConfig)和企业同步配置

spring手把手配置讲解(基于javaConfig)和企业同步配置,第1张

spring手把手配置讲解(基于javaConfig)和企业同步配置

文章目录
  • 1.1. 基于java的容器配置
    • 1.1.1.基本概念: @Bean 和 @Configuration
    • 1.1.2.使用AnnotationConfigApplicationContext初始化Spring容器
    • 1.1.3. @Bean 注解
    • 1.1.4. @Configuration 注解

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的 定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。

测试:

1.1. 基于java的容器配置 1.1.1.基本概念: @Bean 和 @Configuration

绑定Java与XML配置

@Configuration // 就相当于创建了一个xml 文件 
@ComponentScan("cn.tulingxueyuan") //
@PropertySource("classpath:db.properties") 
public class MainConfiration { 
  
  
	   @Value("${mysql.username}") 
	   private String name; 
	   @Value("${mysql.password}") 
	   private String password; 
	   @Value("${mysql.url}") 
	   private String url; 
	   @Value("${mysql.driverClassName}")
	   private String driverName; 
	    
   
    //  
    // 可以干预Bean实例化过程!
     @Bean 
     public DruidDataSource dataSource(){ 
	     DruidDataSource dataSource=new DruidDataSource(); 
	     dataSource.setName(name); 
	     dataSource.setPassword(password);
	     dataSource.setUrl(url); 
	     dataSource.setDriverClassName(driverName);
	 	 return dataSource; 
 
 	} 

 	 //init‐method="initByConfig" destroy‐method="destroyByConfig" 
 	 @Bean(initMethod = "initByConfig",destroyMethod = "destroyByConfig") 
	 public User userconf(){ 

 		return new User(); 
 	} 
}
1.1.2.使用AnnotationConfigApplicationContext初始化Spring容器
  1. 简单结构
@Test 
public void test01(){ 
		
		ApplicationContext ioc=new AnnotationConfigApplicationContext(MainConfir ation.class); 
		
		UserController bean = ioc.getBean(UserController.class); 
		
		bean.getUser(); 
}
1.1.3. @Bean 注解
  1. 声明一个bean

    @Bean是一个方法级别的注解,它与XML中的 元素类似。注解支持 提供的一 些属性,例如 * init-method * destroy-method * autowiring * name 开发者可以在@Configuration类或@Component类中使用@Bean注解。
    
@Configuration 
public class AppConfig { 

	@Bean 
	public TransferService transferService() { 
 		return new TransferServiceImpl(); 
 	} 
}

前面的配置完全等同于以下Spring XML:

 
 		 

Bean之间的依赖

我们可以使用方法参数来实现该依赖关系,如以下示例所示:
@Configuration 
public class AppConfig { 

	@Bean 
	public TransferService transferService(AccountRepository accountReposito ry) { 
 		return new TransferServiceImpl(accountRepository); 
 	} 
}

接受生命周期回调

@Bean(initMethod = "initByConfig",destroyMethod = "destroyByConfig") 
public User userconf(){ 
 	return new User(); 
}

指定 Bean 的作用域

@Configuration 
public class MyConfiguration { 

	@Bean 
	@Scope("prototype") 
	public Encryptor encryptor() { 
 		// ... 
 	} 
}

自定义Bean的名字

//默认情况下,配置类使用@Bean方法的名称作为结果bean的名称。 
//但是,可以使用name属性覆盖此功能,如以下示例所示: 
@Configuration 
public class AppConfig { 

 	@Bean(name = "myThing") 
 	//多个别名:@Bean(name = { "dataSource", "subsystemA‐dataSource", "subsys temB‐dataSource" }) 
 	public Thing thing() { 
		 return new Thing(); 
 	} 
}
1.1.4. @Configuration 注解

注入内部bean依赖

//当Bean彼此有依赖关系时,表示依赖关系就像调用另一个bean方法一样简单.如下例所 示:
@Configuration 
public class AppConfig { 

 	@Bean 
 	public BeanOne beanOne() { 
 		return new BeanOne(beanTwo()); 
 	} 

 	@Bean 
 	public BeanTwo beanTwo() { 
 		return new BeanTwo(); 
 	} 
}

1.1.5. 构成基于Java的配置
@import 注解

//就像在Spring XML文件中使用元素来帮助模块化配置一样, 
//@import 注解允许从另一个配置类加载@Bean定义,如下例所示: 
@Configuration 
public class ConfigA { 

 	@Bean 
 	public A a() { 
 		return new A(); 
 	} 
} 

@Configuration 
@import(ConfigA.class) 
public class ConfigB { 

 	@Bean 
 	public B b() { 
 		return new B(); 
 	}
}

将一个类注入到ioc中:

  1. xml:

  2. @Component (@Controller,@Service,@Repository)

  3. @Bean @import

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5581772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存