@SpringBootApplication定义在main方法入口类,用于启动spingboot应用项目@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@Configuration@EnableAutoConfiguration@ComponentScanpublic@interfaceSpringBootApplication{/***排除特定的自动配置类,这样它们将永远不会被应用。*@returntheclassestoexclude*/Class>[]exclude()default{};}@EnableAutoConfiguration让springboot根据class路径中的jar包依赖当前项目在META-INF中进行自动配置/spring.factoriesorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\org.springframework.boot.autoconfigure.aop.AopAutoConfiguration如果有多个自动配置,用","隔开@ImportResource加载XML文件,一般放在启动主类@ImportResource("classpath*:/spring/*.xml")单个@ImportResource({"classpath*:/spring/1.xml","classpath*:/spring/2.xml"})多个@Valueapplication.properties定义属性,直接只需要使用@Value注入publicclassA{@Value("${push.start:0}")如果缺失,默认值为0privateLongid;}@ConfigurationProperties(prefix="person")可以创建一个新的property文件,ConfigurationProperties的属性前缀指定属性配置的前缀,properties文件的位置由location@ConfigurationProperties(prefix="person")publicclassPersonProperties{privateStringname;privateintage;}@EnableConfigurationProperties使用@EnableConfigurationProperties注解使@ConfigurationProperties生效并从IOC容器获取bean博客地址:https://blog.csdn.net/u010502...@RestController结合了@Controller和@ResponseBody,当你开发一个与页面数据交互的控件时,比如bbs-web的API接口需要这个注解@RequestMapping("/api2/copper")来映射web请求(访问路径和参数),处理类和方法,并且可以在类或方法上进行注释。方法上的路径会继承类上注解的路径。produces属性:自定义返回响应的媒体类型和字符集,或者返回值需要是json对象@RequestMapping(value="/api2/copper",produces="application/json;charset=UTF-8",method=RequestMethod.POST)@RequestParam获取request请求的参数值publicListgetOpList(HttpServletRequestrequest,@RequestParam(value="pageIndex",required=false)IntegerpageIndex,@RequestParam(value="pageSize",required=false)IntegerpageSize){}@ResponseBody支持将返回值放在响应体中,而不是返回一个页面。例如,Ajax接口,您可以使用此注解返回数据而不是页面。这个注解可以放在返回值之前,也可以放在方法之前。另一种玩法是不使用@ResponseBody。继承FastJsonHttpMessageConverter类,扩展writeInternal方法。当spring响应结果时,再次拦截并处理结果//stringResult:json返回结果//HttpOutputMessageoutputMessagebyte[]payload=stringResult.getBytes();outputMessage.getHeaders().setContentType(META_TYPE);outputMessage.getHeaders().setContentLength(payload.length);outputMessage.getBody().write(payload);outputMessage.getBody().flush();@Bean@Bean(name="bean的名字",initMethod="Callthemethodnameduringinitialization",destroyMethod="close")定义在方法上,初始化一个bean实例类在容器中@Bean(destroyMethod="close")@ConditionalOnMissingBeanpublicPersonServiceregistryService(){returnnewPersonService();}@Service用于标注业务层组件@Controller用于标注控制层组件(如struts中的action)@Repository用于标注数据访问组件,即DAO组件@Component泛指组件,当组件不容易归类,我们可以使用这个注解进行注解。@PostConstructspring容器初始化的时候,应该执行这个方法@PostConstructpublicvoidinit(){}@PathVariable用于获取请求url中的动态参数@ControllerpublicclassTestController{@RequestMapping(value="/user/{userId}/roles/{roleId}",method=RequestMethod.GET)publicStringgetLogin(@PathVariable("userId")StringuserId,@PathVariable("roleId")StringroleId){System.out.println("用户ID:"+userId);System.out.println("角色编号:"+roleId);返回“你好”;@ComponentScan注解会告诉Spring扫描指定的包来初始化Spring@ComponentScan(basePackages="com.bbs.xx")@EnableZuulProxy路由网关的主要目的是让所有的微服务只有一个对外接口。我们只需要访问一个网关地址,网关就可以把所有的请求代理到不同的服务上。SpringCloud通过Zuul实现,支持自动路由映射到注册在EurekaServer上的服务。SpringCloud提供注解@EnableZuulProxy来启用路由代理@Autowired。默认情况下,使用@Autowired注解进行自动注入时,Spring容器中匹配的候选bean的个数必须是一个且只能是一个。当找不到匹配的bean时,Spring容器会抛出BeanCreationException异常,指出必须至少有一个匹配的bean。当不确定Spring容器一定要有某个类的bean时,可以在需要的时候自动注入。有些地方可以使用@Autowired(required=false),相当于告诉Spring:找不到匹配的Bean就不会报错@Autowired注解注入图、列表和@Qualifier博客地址:https://blog.csdn.net/ethunse...@Configuration@Configuration("name")//表示这是一个配置信息类,也可以给这个配置类起个名字@ComponentScan("spring4")//类似publicclassConfig{@Autowired//自动注入,如果容器中有多个conformingbean,需要进一步说明@Qualifier("compent")//进一步指定注入的bean名称beanprivateComponentcompent;@Bean//类似于xml中的publicCompentnewbean(){returnnewCompent();}}@Import(Config1.class)导入Config1配置中实例化的beanclass@ConfigurationpublicclassCDConfig{@Bean//将SgtPeppers注册为SpringContext中的beanpublicCompactDisccompactDisc(){returnnewCompactDisc();//光盘类型}}@Configuration@Import(CDConfig.class)//引入CDConfig的配置publicclassCDPlayerConfig{@Bean(name="cDPlayer")publicCDPlayercdPlayer(CompactDisccompactDisc){//这里会注入一个CompactDisc类型的bean//这里注入的bean就是CDConfig中的CompactDisc。class类型的beanreturnnewCDPlayer(compactDisc);}}@Order@Order(1),值越小,优先级越高,最先运行(ConfigContextconfigContext){返回新的OrderMessageMonitor(configContext);}}switch为true时才实例化bean@ConditionalOnProperty这个注解可以控制某个@Configuration是否生效。具体操作是通过它的两个属性name和havingValue,其中name用来从application.properties中读取一个属性值,如果值为空,则返回false;如果该值不为空,则将该值与havingValue指定的值进行比较,相同则返回true;否则,返回假。如果返回值为false,则配置不会生效;为true则生效博客地址:https://blog.csdn.net/dalangz...@ConditionalOnClass注解的参数对应的类必须存在,否则不会解析注解修改配置类@Configuration@ConditionalOnClass({Gson.class})公共类GsonAutoConfiguration{publicGsonAutoConfiguration(){}@Bean@ConditionalOnMissingBeanpublicGsongson(){returnnewGson();}}@ConditionalOnMisssingClass({ApplicationManager.class})如果有它修改的类的bean,则不需要重新创建这个bean@ConditionOnMissingBean(name="example")表示如果名字为"example"的bean"存在,被注解修改的代码块不会被执行