Spring Boot进阶教程——注解大全(建议收藏!)( 二 )
public class FirstBean {@Autowiredprivate SecondBean secondBean;}public class SecondBean {public SecondBean() {System.out.println("SecondBean init");}}
@Configurationpublic class BeanConfig {@Bean("firstBean")@DependsOn(value = http://kandian.youth.cn/index/{"secondBean"})public FirstBean firstBean() {return new FirstBean();}@Bean("secondBean")public SecondBean secondBean() {return new SecondBean();}}
1.7 @Lazy
@Lazy注解用于标识bean是否需要延迟加载 。 Spring IoC容器一般都会在启动的时候实例化所有单实例bean , 如果想要Spring在启动的时候延迟加载A , 即在调用B的时候再去初始化 , 则可以使用@Lazy注解 。
public class FirstBean {public void test() {System.out.println("FirstBean Class");}}public class SecondBean {public void test() {System.out.println("SecondBean Class");}}
@Configurationpublic class AppConfig {@Lazy(value = http://kandian.youth.cn/index/true)@Beanpublic FirstBean firstBean() {return new FirstBean();}@Beanpublic SecondBean secondBean() {return new SecondBean();}}
1.8 @Lookup
@Lookup的注解是一个作用在方法上的注解 , 被其标注的方法会被重写 , 然后根据其返回值的类型 , 容器调用BeanFactory的getBean()方法来返回一个bean 。
1.9 @Primary
@Primary与@Qualifier类似 , 都是解决@Autowired时容器中有多个相同类型bean的问题 , Primary可以理解为默认优先选择,同时不可以同时设置多个 。
@Component("studentInfo")public class StudentInfo implements UserInfo {public String userName() {return "student";}}@Component("teacherInfo")@Primarypublic class TeacherInfo implements UserInfo {public String userName {return "teacher";}}@Componentpublic class UserService {@Autowired@Qualifier("studentInfo")private UserInfo userInfo;//todo}
1.10 @Scope
@Scope注解是springIoc容器中的一个作用域 , 在 Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)(默认作用域)、prototype(多例) , Web 作用域(reqeust、session、globalsession) , 自定义作用域
1.11 @Profile
@profile注解的作用是为了应对多环境开发 , 比如开发环境使用dev, 生产环境使用prod,就可以使用@Profile注解实现不同的开发环境使用不同的数据源 。 spring3.2之前 @Profile注解用在类上 , spring3.2 之后 @Profile注解用在方法上
1.12 @Import
@Import用于注入指定的类 , 导入组件id默认是组件的全类名 。
@Configurationpublic class ConfigA {@Beanpublic A a() {return new A();}}@Configuration@Import(ConfigA.class)public class ConfigB {@Beanpublic B b() {return new B();}}
1.13 @ImportResource
@ImportResource注解用于导入Spring的配置文件 , 让配置文件里面的内容生效;(就是以前写的springmvc.xml、applicationContext.xml)
@Configuration@ImportResource({"classpath*:applicationContext.xml"})public class XmlConfiguration {}
1.14 @PropertySource
@PropertySource注解加载指定的配置文件
@Configuration@PropertySource("classpath:config.properties")public class ProperySourceDemo implements InitializingBean {@AutowiredEnvironment env;@Overridepublic void afterPropertiesSet() throws Exception {setDatabaseConfig();}private void setDatabaseConfig() {DataSourceConfig config = new DataSourceConfig();config.setDriver(env.getProperty("jdbc.driver"));config.setUrl(env.getProperty("jdbc.url"));config.setUsername(env.getProperty("jdbc.username"));config.setPassword(env.getProperty("jdbc.password"));System.out.println(config.toString());}}
1.15 @PropertySources
@PropertySources顾名思义就是可以指定多个@PropertySource来导入配置文件 。
@PropertySources({@PropertySource("classpath:config.properties"),@PropertySource("classpath:db.properties") }) public class AppConfig {//todo... }
SpringWeb注解2.1 @RequestBody
主要用来接收前端传递给后端的json字符串中的数据的 。
@RestController@RequestMapping("/api/v1")public class UserController {@Autowiredprivate UserService userService;@PostMapping("/user")public UserInfo createUser(@Valid @RequestBody UserInfo user) {return userService.save(user);}}
2.2 @RequestMapping
【Spring Boot进阶教程——注解大全(建议收藏!)】@RequestMapping是一个用来处理请求地址映射的注解 , 可用于类或方法上 。 也就是通过它来指定控制器可以处理哪些URL请求 。
@Controllerclass UserController {@RequestMapping(value = "http://kandian.youth.cn/user/index", method = RequestMethod.GET)String index() {return "index";}}
2.3 @GetMapping
@GetMapping注释将Http GET请求映射到特定的处理程序方法 。它是一个组合的注释 , @RequestMapping(method = RequestMethod.GET)的快捷方式 。
@GetMapping("/users")public List
- Spring security CSRF 跨域访问限制问题
- Spring Boot搭建的一个在线文件预览系统
- 面试官:问你一个,Spring事务是如何传播的?
- 对Spring MVC接口进行Mock测试
- 又爆新作!阿里甩出架构师进阶必备神仙笔记,底层知识全梳理
- Spring Cloud Alibaba之 Sentinel
- SpringBoot+MyBatis+MySQL读写分离实现
- SpringBoot构造流程源码分析:Web应用类型推断
- 搭建私有Sentry日志收集系统并集成到springboot
- 从零到进阶架构,覆盖全网所有技术点3283页笔记、pdf教程