96SEO 2026-02-19 20:35 0
一、xml配置文件二、注解定义bean1、使用AnnotationConfigApplicationContext对象加载2、加载本地类3、加载第三方jar类

三、特殊方式1、使用FactroyBean接口3.2、注解导入XML格式配置的bean3.3、通过上下文ApplicationContext注册bean
四、Import注解注入bean1、Import导入普通类2、Import导入实现了ImportSelector接口的类3、Import导入实现了ImportBeanDefinitionRegistrar接口的类4、Import导入实现了BeanDefinitionRegistryPostProcessor接口的类
xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!--xml方式声明自己开发的bean--bean
classcom.xc.entity.Person/!--xml方式声明第三方开发的bean--bean
classcom.alibaba.druid.pool.DruidDataSource/
{ClassPathXmlApplicationContext
ClassPathXmlApplicationContext(spring-bean.xml);for
context.getBeanDefinitionNames())
{System.out.println(beanDefinitionName);}}
1、使用AnnotationConfigApplicationContext对象加载
{AnnotationConfigApplicationContext
AnnotationConfigApplicationContext(MyConfig.class);for
context.getBeanDefinitionNames())
{System.err.println(beanDefinitionName);}}
}使用AnnotationConfigApplicationContext对象加载MyConfig即使MyConfig类什么注解没有也会被注册为bean。
使用的注解Component或其他衍生注解Service、Controller、Repository
由于我们无法在第三方提供的技术源代码中去添加上述4个注解因此当你需要加载第三方开发的bean的时候可以使用Component和Configuration都可以一般引入第三方倾向于后者。
Cat();cat.setDruidDataSource(dataSource());return
}Configuration(proxyBeanMethods
true)默认设置使用了cglib动态代理cat里的dataSource和Bean创建的dataSource是同一个对象可以理解为单例Configuration(proxyBeanMethods
false)此时和Component注解功能一样cat里的dataSource和Bean创建的dataSource不是同一个对象可以理解为多例如果配置中Bean标识的方法之间不存在依赖调用的话可以设置为false可以避免拦截方法进行代理操作提升性能
spring提供了一个接口FactoryBean也可以用于声明bean实现了FactoryBean接口的类造出来的对象不是当前类的对象而是FactoryBean接口泛型指定类型的对象一般用来创建复杂对象
Dog.class;}//bean是否单例Overridepublic
{AnnotationConfigApplicationContext
AnnotationConfigApplicationContext(MyConfig.class);System.out.println(context.getBean(dog));}
场景旧项目xml配置bean融入配置类项目中ImportResource在配置类上直接写上要被融合的xml配置文件名即可
}3.3、通过上下文ApplicationContext注册bean
{AnnotationConfigApplicationContext
AnnotationConfigApplicationContext(SpringConfig.class);//上下文容器对象已经初始化完毕后手工加载beanctx.register(Mouse.class);}
{AnnotationConfigApplicationContext
AnnotationConfigApplicationContext(SpringConfig.class);//上下文容器对象已经初始化完毕后手工加载beanctx.registerBean(tom,
场景将一个无任何注解的类加载为bean一个类Improt只能用一次想要导入多个使用{…,…}只有MyConfig加载为beanImport才生效
{AnnotationConfigApplicationContext
AnnotationConfigApplicationContext(MyConfig.class);for
context.getBeanDefinitionNames())
{System.err.println(beanDefinitionName);}}
com.xc.springboot.bean.Cat2、Import导入实现了ImportSelector接口的类
可以通过添加判断语句就可以实现对bean的加载控制返回值为多个全路径类名字符串metadata为Import注解类的元数据可以拿到MyConfig类上所有的注解注解里的属性继承的接口父类等等信息如下则是判断MyCofig类上有Configuration注解则加载Dog类否则加载Cat类
selectImports(AnnotationMetadata
metadata.getClassName());//各种条件的判定判定完毕后决定是否装载指定的beanboolean
metadata.hasAnnotation(org.springframework.context.annotation.Configuration);if(flag){return
String[]{com.xc.springboot.bean.Dog};}return
String[]{com.xc.springboot.bean.Cat};}
{AnnotationConfigApplicationContext
AnnotationConfigApplicationContext(MyConfig.class);for
context.getBeanDefinitionNames())
{System.err.println(beanDefinitionName);}}
元数据Class名称com.xc.springboot.bean.MyConfig
com.xc.springboot.bean.Dog3、Import导入实现了ImportBeanDefinitionRegistrar接口的类
返回值为void通过Bean定义beanDefinition注册创建新的bean同样可以通过添加判断语句就可以实现bean的加载控制更加细粒度判断bean
registerBeanDefinitions(AnnotationMetadata
BeanDefinitionBuilder.rootBeanDefinition(BookService.class).getBeanDefinition();registry.registerBeanDefinition(bookService,beanDefinition);}
}4、Import导入实现了BeanDefinitionRegistryPostProcessor接口的类
BeanDefinitionRegistryPostProcessor接口其中有两个重要的方法
postProcessBeanDefinitionRegistry用于注册新的BeanDefinitionpostProcessBeanFactory用于在BeanFactory准备好后进行自定义操作
BeanDefinitionRegistryPostProcessorbean定义注册最后的处理器在以上处理后执行此操作如果想bean最后确定一个值可以在这里操作
MyBeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor
postProcessBeanDefinitionRegistry(BeanDefinitionRegistry
BeanDefinitionBuilder.genericBeanDefinition(MyCustomBean.class);//
中registry.registerBeanDefinition(myCustomBean,
builder.getBeanDefinition());System.out.println(Bean
postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory
进行进一步的配置System.out.println(Bean
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback