1. 程式人生 > >spring常用管理bean註解

spring常用管理bean註解

fig tran ebean 構造 control prop repos set resp

spring提供了多個註解聲明Bean為spring管理的Bean

@Controller  聲明此類是一個MVC類,通常與@RequestMapping一起使用

@Controller
@RequestMapping("user")
public class UserController {

    @RequestMapping("get/{id}")
    public String getUser(@PathVariable String id){
        return "";
    }
}

如果訪問/user/get/1,將調用getUser方法,並把參數1傳給id。

@Service  聲明此類是一個業務處理類,通常與@Transactional一起使用

@Service
@Transactional
public class UserServiceImpl implements UserService {
    public void order(...){
        ...
    }
}

@Repository  聲明此類是一個dao類,訪問數據庫

@Repository
public class UserDao implements CrudDao<User,String> {
        ...
    }
}

@RestController

  等於@Controller+@ResponseBody,用於REST服務,可返回json格式字符串

@Component  聲明此類是一個Spring管理的類,通常用於無法用上述註解描述的spring管理類

@Configuration  聲明此類是一個配置類,通常與@Bean 配合使用

@Configuration
public class DataSourceConfig {

    @Bean(name="dataSource")
    public DataSource dataSource(Environment env){
        HikariDataSource ds
=new HikariDataSource(); ds.setDriverClassName(env.getProperty("spring.dataSource.driver-class-name")); ds.setJdbcUrl(env.getProperty("spring.dataSource.url")); ds.setUsername(env.getProperty("spring.dataSource.username")); ds.setPassword(env.getProperty("spring.dataSource.password")); return ds; } }

上例DataSourceConfig 是一個spring容器配置類,配置了HikariDataSource。

@Bean  作用在方法上,聲明該方法執行的結果返回結果是一個spring容器管理的Bean,參考上例

spring負責實例化Bean,可以提供一系列回調函數,進一步配置Bean

@PostConstruct  當bean被容器初始化後會調用@PostConstruct註解的方法

@Component
public class ExampleBena {
  
      @PostConstruct    
      public void init(){...}      
}  

@PreDestory  在容器被銷毀之前調用@PreDestory註解的方法

@Service
public class ExampleBena {
  
      @PreDestory
      public void clear(){...}      
}  

spring有兩種方式來引用容器管理的Bean,一種是根據名字,為每個管理的bean指定一個名字,隨後可以通過名字引用此Bean

@Service
@Qualifier("exampleBean")
  public class ExampleBean {

}

在其他Bean中使用註解@Qualifier來引用

@Service
public class AnotherExampleBean {

  @Qualifier("exampleBean")    
    ExampleBean bean;
}

另一種是根據類型,使用註解@Autowired

@Service
public class ExampleBean {

}

@Service
public class AnotherExampleBean {
  @Autowired    
    ExampleBean bean;
}

在一個spring管理的Bean中,可以通過@Autowired聲明對其他Bean的引用,作用於屬性或者構造函參數,甚至是方法調用參數上。

技術分享圖片

spring常用管理bean註解