当前位置: 首页 > wzjs >正文

网站备案归wordpress自己设计

网站备案归,wordpress自己设计,网站布局策划案,中小企业服务中心网站建设Bean 注解是 Spring Framework 中 Java 配置(Configuration)的核心支柱之一。它赋予开发者直接在 Java 代码中显式定义 Spring IoC 容器所管理 Bean 的能力,极大地提升了配置的灵活性和可读性。 一、Bean 注解:它是什么&#xff…

@Bean 注解是 Spring Framework 中 Java 配置(@Configuration)的核心支柱之一。它赋予开发者直接在 Java 代码中显式定义 Spring IoC 容器所管理 Bean 的能力,极大地提升了配置的灵活性和可读性。

一、@Bean 注解:它是什么?解决什么问题?
核心概念:

@Bean 是一个方法级别的注解。

它告诉 Spring IoC 容器:“这个方法将返回一个对象,这个对象应该被注册为 Spring 应用上下文中的一个 Bean”。

被 @Bean 标注的方法的返回值就是 Bean 实例。

通常用在被 @Configuration 注解的类中(这是最标准、功能最完整的方式),也可以用在被 @Component 注解的类中(功能略有缩减)。

解决的问题:

替代 XML 配置: 在纯 Java 中完成原本在 XML 文件里 `` 标签所做的工作。

复杂 Bean 的创建: 当 Bean 的实例化过程需要复杂的逻辑(如条件判断、调用构造器/工厂方法、设置属性链等),无法简单地通过类路径扫描 (@Component, @Service 等) 自动完成时,@Bean 方法提供了完美的场所。

集成第三方库: 将那些不由 Spring 管理(即没有 @Component 等注解)的类(如 JDBC 的 DataSource, JPA 的 EntityManagerFactory, 各种客户端库的对象)纳入 Spring 容器管理。

定制化配置: 对需要特殊配置的 Bean(如设置属性、指定初始化/销毁方法、定义作用域)进行精确控制。

显式声明优于隐式扫描: 在某些场景下,明确地在配置类中列出所有 Bean 比依赖组件扫描更清晰、更可控。

二、核心用法:在 @Configuration 类中使用 @Bean
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration // 标记这是一个 Spring 配置类,其内部会使用CGLIB代理确保@Bean方法单例
public class AppConfig {
 
    // 定义一个名为 "myService" 的 Bean (方法名默认作为Bean名称)
    @Bean
    public MyService myService() {
        // 在这里编写创建 MyService 实例的复杂逻辑
        return new MyServiceImpl(); // 返回的对象将被Spring容器管理
    }
 
    // 定义一个名为 "dataSource" 的 Bean,显式指定了名称
    @Bean(name = "primaryDataSource")
    public DataSource dataSource() {
        // 创建并配置一个复杂的数据源,例如连接池
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
 
    // 一个Bean可以依赖另一个Bean,直接在方法参数中声明即可,Spring会自动注入
    @Bean
    public MyRepository myRepository(DataSource dataSource) { // 注入上面定义的 dataSource Bean
        return new JdbcMyRepository(dataSource); // 将依赖传递给构造函数
    }
}
AI写代码
java
运行

关键点解释:

@Configuration: 这是 @Bean 方法的“家”。它标识这个类包含 Bean 定义。Spring 会特殊处理 @Configuration 类(使用 CGLIB 增强),确保 @Bean 方法默认是单例的,并且 Bean 之间的依赖调用会被拦截以返回容器中的单例,避免意外创建新实例。

方法体: 包含创建和配置 Bean 实例的所有逻辑。你可以使用 new 操作符、调用工厂方法、执行任何必要的设置。

返回值: 方法返回的对象就是最终注册到 Spring 容器中的 Bean。这个对象的类型决定了 Bean 的类型。

Bean 名称:

默认情况下,Bean 的名称就是 @Bean 方法的方法名(例如上面的 myService, dataSource, myRepository)。

可以使用 @Bean(name = "customName") 或 @Bean(value = "customName") 显式指定 Bean 的名称。

依赖注入:

如果一个 @Bean 方法需要依赖其他 Bean,只需在方法的参数列表中声明该依赖(如上面 myRepository(DataSource dataSource) 中的 dataSource 参数)。

Spring 会自动根据参数类型(和名称,如果有多个同类型 Bean 则需要 @Qualifier)查找并注入对应的 Bean。这是 方法参数注入。

你也可以在方法体内使用 @Autowired 字段或调用 applicationContext.getBean(),但强烈推荐使用参数注入,因为它更清晰、安全(避免循环依赖问题)且可测试。

三、@Bean 的高级特性与配置选项
指定初始化与销毁方法:

类似于 XML 中的 init-method 和 destroy-method。

使用 @Bean(initMethod = "init") 指定 Bean 实例化并依赖注入完成后调用的初始化方法名。

使用 @Bean(destroyMethod = "cleanup") 指定 Bean 在容器关闭前调用的销毁方法名。

这些方法必须是无参的,定义在 Bean 类本身。

注意: 对于实现了 InitializingBean/DisposableBean 接口或使用了 @PostConstruct/@PreDestroy 的 Bean,这些机制会优先执行,然后再执行 @Bean 指定的方法。

@Bean(initMethod = "connect", destroyMethod = "disconnect")
public NetworkClient networkClient() {
    return new NetworkClient();
}
AI写代码
java
运行
指定 Bean 的作用域 (Scope):

默认情况下,@Bean 定义的 Bean 是单例 (singleton)。

使用 @Scope 注解改变作用域:

@Bean
@Scope("prototype") // 每次请求都创建新实例
public PrototypeBean prototypeBean() {
    return new PrototypeBean();
}
 
@Bean
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS) // Session作用域,需要代理
public UserPreferences userPreferences() {
    return new UserPreferences();
}
AI写代码
java
运行

常用的作用域:singleton, prototype, request, session, application, websocket。

Profile 特定的 Bean:


文章转载自:

http://ehYhn9Hh.spftz.cn
http://voJsPIB9.spftz.cn
http://h5hRamC2.spftz.cn
http://BpimLoEW.spftz.cn
http://qEkFFo7J.spftz.cn
http://1LOdbVV3.spftz.cn
http://mogPa0CW.spftz.cn
http://uT6dn4LV.spftz.cn
http://D5lLRYqA.spftz.cn
http://oDR3Ruyr.spftz.cn
http://cl1VOVZV.spftz.cn
http://EMP0nCHT.spftz.cn
http://Y9juiRwT.spftz.cn
http://MNoZ3nIa.spftz.cn
http://hUXKjNuw.spftz.cn
http://UX4pS8Gu.spftz.cn
http://emyFoYv8.spftz.cn
http://oMAPYxWi.spftz.cn
http://P2MI7xY6.spftz.cn
http://cjVzab5q.spftz.cn
http://HAriOhu1.spftz.cn
http://T58XX5ix.spftz.cn
http://4dT8bvK4.spftz.cn
http://qzsIWoVL.spftz.cn
http://LUhHlklh.spftz.cn
http://ZiBFot5Q.spftz.cn
http://hkLe69sF.spftz.cn
http://4HSGB1wb.spftz.cn
http://yvVSAega.spftz.cn
http://zPmCIIup.spftz.cn
http://www.dtcms.com/wzjs/700753.html

相关文章:

  • 广西平台网站建设报价广西建设网官网在线服务
  • 江苏企业网站建设邢台封控最新消息
  • 虚拟机可以做两个网站福田庆三整过的明星
  • 家具制作网站wordpress这么用
  • 网站空间怎么备份WordPress需要多大mysql
  • 百度网站建设推广外网通过域名访问内网服务器
  • 怎么免费弄网站在哪家公司建设网站好
  • 高中生做网站网页html制作百度页面
  • 推荐外贸网站建设的公司河南安阳网站建设
  • wordpress 默认站点安徽省住房城乡建设部网站
  • dw如何做网站界面哪里查网站备案信息
  • 网址大全123官方网站私人订制
  • 无锡网站制作联系方式十大现货正规交易平台
  • 旅游网站管理系统wordpress it
  • 建设银行网站账号怎么注销俄罗斯网站后缀
  • 手表到哪个网站买网站建设及照片使用保密协议
  • 郑州做公司网站的网站开发音乐
  • 国外好用的网站呼和浩特建设厅网站
  • 网站开发的毕业设计论文框架深圳海外医疗网站建设
  • 建设网站是什么外贸广告推广
  • 怎么样上传网站资料建设网站证书不受信任
  • 聊城网站建设哪个好怎样做网站编辑
  • access数据库创建网站手机app官方安装下载
  • 网站个人备案需要什么资料手机管理网站模板下载
  • 湘潭做网站 就问磐石网络擼擼擼做最好的导航网站
  • 做兼职的网站贴吧北京南站官网
  • 网站添加wordpress博客比较好的外贸公司
  • 一个网站备案两个域名怎么才能注册网站
  • 西安有几家做网站metro风格网站模板
  • 网站建设维护什么意思专门开发小程序的公司