Bean基本注解开发

@Commponent

使用@Component注解代替<bean>标签

XML 复制代码
<!--注解扫描:扫描指定的基本包及其子包下的类,识别使用了@Component注解的文件-->
    <context:component-scan base-package="org.xfy"></context:component-scan>
java 复制代码
package org.xfy.Dao.Impl;

import org.springframework.stereotype.Component;
import org.xfy.Dao.UserDao;
//当注解的属性只有一个且为value的时候  在注解中value可以省略不写
@Component("userDao")
public class UserDaoImpl implements UserDao {
}

注意:@Component注解开发不指定id的话,那就是类名首字母小写

@Component注解开发不指定id的话,那就是类名首字母小写

@Service、@Componet 定义的 bean name 的生成规则如下: 优先取注解中的 value 指定的名字做为 bean name。 如果注解中没有指定的话,默认情况下是类名小写,例如: "mypackage.MyJdbcDao" -> "myJdbcDao" 注意有两种特殊的情况:

  1. 如果 bean 是内部类的话,因此将会是 "outerClassName.InnerClassName" 形式的名称

  2. 如果类名是连续2个首字母大写的话,bean name 就是类名,例如:"mypackage.MYJdbcDao" -> "MYJdbcDao"

@Bean 定义的 bean name 的生成规则是: 优先取注解中 name 指定的名字做为 bean name。 如果注解中没有指定的话,就取 methodName 做为 bean name。

java 复制代码
package org.xfy.Dao.Impl;

import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.xfy.Dao.UserDao;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

//当注解的属性只有一个且为value的时候  在注解中value可以省略不写
@Component("userDao")
@Scope(scopeName = "singleton")
@Lazy(value = false)
public class UserDaoImpl implements UserDao {
    public UserDaoImpl() {
        System.out.println("初始化");
    }
    @PostConstruct
    void init(){
        System.out.println("初始化方法");
    }
    @PreDestroy
    void destory(){
        System.out.println("销毁方法");
    }
}

其他注解

java 复制代码
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.springframework.stereotype;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Repository {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}
相关推荐
m0_748248027 小时前
C++中的位运算符:与、或、异或详解
java·c++·算法
介一安全7 小时前
从 0 到 1 玩转 2025 最新 WebGoat 靶场:环境搭建 + 全关卡漏洞解析(超级详细)
java·web安全·网络安全·靶场
web安全工具库7 小时前
Linux进程的:深入理解子进程回收与僵尸进程
java·linux·数据库
沐浴露z7 小时前
详解【限流算法】:令牌桶、漏桶、计算器算法及Java实现
java·算法·限流算法
chxii7 小时前
Spring Boot 响应给客户端的常见返回类型
java·spring boot·后端
老友@8 小时前
一次由 PageHelper 分页污染引发的 Bug 排查实录
java·数据库·bug·mybatis·pagehelper·分页污染
AI分享猿8 小时前
小白学规则编写:雷池 WAF 配置教程,用 Nginx 护住 WordPress 博客
java·网络·nginx
sp428 小时前
漫谈 Java 轻量级的模板技术:从字符串替换到复杂模板
java·后端
952368 小时前
数据结构-链表
java·数据结构·学习
喵手8 小时前
Java线程通信:多线程程序中的高效协作!
java