Spring基于注解的容器配置

首先用spring框架开发的程序员会有两种用spring开发的风格

第一种就是我们spring配置的ApplicationContext.xml配置文件
另一种就是我们spring的注解
这时候疑问来了,注解是否比配置Spring的XML更好?
答案当然不是绝对的!
基于注解的配置的引入引发了这种方法是否比XML“更好”的问题。简短的回答是“它取决于谁。”
长期的答案是每种方法都有其优点和缺点,通常,由开发人员决定哪种策略更适合他们。由于它们的定义方式。
《注解在其声明中提供了大量上下文,从而导致更短更简洁的配置。但是,XML擅长在不触及源代码或重新编译它们的情况下连接组件。一些开发人员更喜欢将布线靠近源,而另一些开发人员则认为注解类不再是POJO,而且配置变得分散且难以控制。》
综上所述,无论选择如何,Spring都可以兼顾两种风格,甚至可以将它们混合在一起。
好,接下来我们就开始讲解我们平时会用的注解

自我理解使用注解定义bean两种方式{

1)@Configuration
@Bean

2)@CompentScan (bean的扫描){

@Compoment

@Repository:用于标注Dao类

@Service:用来表明业务逻辑一般建议在项目中写在实现类上

@Controller:用于标注控制器的类

@Configuration 定义取代xml的java配置类

@Autowired:用来表示根据类型注入

@Resource:用来表示根据名称注入

@Scope:等同于配置文件scope属性

@Import 导入其他的java配置类

@Description:用来描述我们的代码(也就是我们的开发人员做项目期间为了更方便的读代码)
}

bean的扫描也就是@ComponentScan的作用是:
扫描指定包下的标记性注解
如果不指定包名,默认与类同级的包及子包

当然我们的注解上也可以实现bean属相的生命周期:
@PostConstruct:相当于我们spring配置文件中的bean属性的init-method方法

@PreDestory:相当于我们spring配置文件中的bean属性的destroy-method方法

范围
@Scope
导入
@Import 导入其他的java配置类
@ImportResource 导入其他spring的xml配置文件

属性文件
@PropertySource 导入属性文件
@Value("${属性文件的key}")
配置PropertySourcesPlaceholderConfigurer类
利用BeanFactoryPostProcessor解决站位符问题

参考如下: 也就是我获取的是jdbc的配置文件的URL路径
在这里插入图片描述
简单的main方法实现
在这里插入图片描述
实现的时候的注意区分:
以上注解的实现用来打开spring容器创建实例化对象的是
AnnotationConfigApplicationContext ann= new AnnotationConfigApplicationContext();

而我们spring配置文件中的是
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“获取配置文件的路径”);
容器扩展

1. Bean元数据前后置处理  
  BeanFactoryPostProcessor
 更改Bean的定义  :BeanDefinition       <bean abastract lazy-init   
  1. Bean前后置处理
    BeanPostProccessor(postProcessBeforeInitialization,postProcessAfterInitialization)
    在Bean被初始化后,给与修改其属性及特征的机会

在这里插入图片描述
当然你用延迟加载这个方法试不出来效果的时候 我建议你使用上图那个方法 并且在实体类里创建一个方法输出一句话来演示 参考:
在这里插入图片描述
那么我们main方法的简单实现如下:
在这里插入图片描述
那么Bean前后置处理的这个接口BeanPostProccessor注意跟上面的加Factory的区分
简单参考如下:
在这里插入图片描述
具体实现:
在这里插入图片描述
环境Environment
记得在这个类上面加上我们的@Configuration
在这里插入图片描述
main的简单实现参考如下:
在这里插入图片描述
帮助我们理解spring容器的图示

在这里插入图片描述
ok我们先写到这里. 未完待续…

猜你喜欢

转载自blog.csdn.net/qq_42864299/article/details/84999661