spring常用管理bean註解
阿新 • • 發佈:2018-06-13
fig tran ebean 構造 control prop repos set resp
等於@Controller+@ResponseBody,用於REST服務,可返回json格式字符串
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
@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註解