Spring的注解开发(自用)

目录

@Component注解

 @Controller、@Service、@Repository

 @Configuration注解

@ComponentScan注解

 总结

@Scope

Bean的生命周期

  @PostConstruct和@PreDestroy注解

 @Autowired注解

@Qualifier

@Value注解

@PropertySource注解

@Bean

@Import

 总结


@Component注解

        @Controller、@Service、@Repository

一个注解就类似一个Bean

在某个类上添加@Component交给Spring框架管理

在其他类中,从IOC容器中获取对应的bean对象

@Component注解如果不起名称,会有一个默认值就是当前类名首字母小写,所以也可以按照名称 获取

@Component注解,还衍生出了其他三个注解@Controller、@Service、@Repository

注意:@Component注解不可以添加在接口上,因为接口是无法创建对象的。

 @Configuration注解

@Configuration注解用于设定当前类为配置类(config)

 

@ComponentScan注解

@ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

 总结

记住@Component、@Controller、@Service、@Repository这四个注解

applicationContext.xml中的作用是指定扫描包路径,注解为 @ComponentScan

@Configuration标识该类为配置类,使用类替换applicationContext.xml文件

ClassPathXmlApplicationContext是加载XML配置文件

AnnotationConfigApplicationContext是加载配置类

@Scope

@Scope控制是否为单例,默认“singleton”为单例  ,“prototype”为非单例

Bean的生命周期

     @PostConstruct和@PreDestroy注解

初始化方法@PostConstruct 生效于构造方法后

销毁方法@PreDestroy 生效与销毁前,destroy只有在容器关闭的时候,才会执行   

   .close(); //关闭容器

注意:@PostConstruct和@PreDestroy注解如果找不到,需要导入下面的jar包

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

 

 @Autowired注解

@Autowired是按照类型注入

@Autowired可以写在属性上,也可也写在setter方法上

@Autowired默认按照类型自动装配,如果IOC容器中同类的Bean找到多个,就按照变量名和 Bean的名称匹配。因为变量名叫bookDao而容器中也有一个booDao,所以可以成功注入

 

@Qualifier

注解开启指定名称装配

 

@Qualifier注解后的值就是需要注入的bean的名称。

注意:@Qualifier不能独立使用,必须和@Autowired一起使用

 

@Value注解

@Repository("bookDao")
public class BookDaoImpl implements BookDao {
    @Value("Xiaopihai")
    private String name;
    public void save() {
        System.out.println("book dao save ..." + name);
    }
}

注意数据格式要匹配,如将"abc"注入给int值,这样程序就会报错。

 

@PropertySource注解

配置类(config)上添加@PropertySource注解

使用@Value在需要的类中读取配置文件中的内容

如果读取的properties配置文件有多个,可以使用@PropertySource的属性来指定多个

@PropertySource({"jdbc.properties","xxx.properties"})

 @Bean

@Bean注解的作用是将方法的返回值制作为Spring管理的一个bean对象

  导入对应的jar包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
//在配置类中添加一个方法
//在方法上添加@Bean注解

@Configuration
public class JdbcConfig {
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");
        return ds;
    }
}

如果有多个bean要被Spring管理,直接在配置类中多些几个方法,方法上添加@Bean注解即可。

JdbcConfig类要放入到config包下,需要被Spring的配置类扫描到即可,扫描注解依旧放在Springconfig上

 

@Import

@Import参数需要的是一个数组,可以引入多个配置类。

@Import注解在配置类中只能写一次

@Configuration
@Import({JdbcConfig.class})
public class SpringConfig {
}

 总结

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值