spring@注解笔记

个人学习笔记

spring@注解

使用注解之前要开启自动扫描功能
其中base-package为需要扫描的包(含子包)
<context:component-scan base-package=“cn.test”/>

@Configuration

把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

@Scope注解

作用域

@Lazy(true)

表示延迟初始化

@ComponentScan

用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件找那个的

@Bean

该注解只用用在方法上,表明使用此方法创建一个对象,并且放入spring容器中

 //指定当前类是一个配置类
@Configuration
//用于指定spring在初始化容器时需要扫描的包
@ComponentScan("com.dynamic_transaction_anno")
//导入其他配置类
@Import({JdbcConfig.class,TransactionConfig.class})
//开启spring注解事务的支持
@EnableTransactionManagement
public class SpringConfig {
 
    @Bean("jdbcTemplate")
    public JdbcTemplate createJdbcTemplate(DataSource ds){
        return new JdbcTemplate(ds);
    }
    @Bean("dataSource")
    public DataSource createDataSource(){
        DriverManagerDataSource dr=new DriverManagerDataSource();
        dr.setDriverClassName("com.mysql.jdbc.Driver");//com.mysql.jdbc.Driver
        dr.setUrl("jdbc:mysql//localhost:330b/eesy");
        dr.setUsername("root");
        dr.setPassword("root");
        return dr;
    }

@Controller

用于标注控制层组件

@Service

用于标注业务层组件

@Repository

用于标注持久层(数据访问组件),即DAO组件。

@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
把资源让spring来管理。相当于xml中配置一个bean。value:指定bean的id,如果不指定value属性,默认bean的id是当前类的类名。首字母小写

@Scope

用于指定scope作用域的(用在类上)

@PostConstruct

用于指定初始化方法(用在方法上)

@PreDestory

用于指定销毁方法(用在方法上)

@Resource

默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

@DependsOn

定义Bean初始化及销毁时的顺序

@Autowired

默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用
自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。当有多个类型匹配时。使用要注入的对象变量名称作为bean的id,在spring容器中查找,找到了注入成功,找不到就报错。

@Primary和@Autowired @Qualifier(“xxx”)

有如下一个接口

public interface Singer {
    String sing(String lyrics);
}

当有两个或者多个实现类的时候

@Component // 加注解,让spring识别
public class MetalSinger implements Singer{

    @Override
    public String sing(String lyrics) {
        return "I am singing with DIO voice: "+lyrics;
    }
}
@Component
public class OperaSinger implements Singer {
    @Override
    public String sing(String lyrics) {
        return "I am singing in Bocelli voice: "+lyrics;
    }
}

@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。(只对接口的多个实现生效)

@Primary
@Component
public class OperaSinger implements Singer{
    @Override
    public String sing(String lyrics) {
        return "I am singing in Bocelli voice: "+lyrics;
    }
}

或者使用@Autowired @Qualifier(“xxx”)
将上面的两个实现类改为如下:

@Component 
@Qualifier("metalSinger")
public class MetalSinger implements Singer{

    @Override
    public String sing(String lyrics) {
        return "I am singing with DIO voice: "+lyrics;
    }
}
@Component
@Qualifier("opreaSinger")
public class OperaSinger implements Singer {
    @Override
    public String sing(String lyrics) {
        return "I am singing in Bocelli voice: "+lyrics;
    }
}

调用

@Component
public class SingerService {
    private static final Logger logger = LoggerFactory.getLogger(SingerService.class);

    @Autowired
    private Singer singer;

    @Qualifier("opreaSinger")
    public String sing(){
        return singer.sing("song lyrics");
    }
}

Swagger注解

@Api

修饰整个类,描述Controller的作用

@ApiOperation

描述一个类的一个方法,或者说一个接口

@ApiParam

单个参数描述

@ApiModel

用对象来接收参数
@ApiModel(description = “响应对象”)

@ApiProperty

用对象接收参数时,描述对象的一个字段
@ApiModelProperty(value = “响应码”, name = “code”, required = true, example = )

@ApiResponse

HTTP响应其中1个描述

@ApiResponses

HTTP响应整体描述

@ApiIgnore

使用该注解忽略这个API

@ApiClass

@ApiError

@ApiErrors

@ApiParamImplicit

@ApiParamsImplicit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值