Spring最开始是为了解决EJB等大型企业框架对应用程序的侵入性 因此大量依靠配置文件来“非侵入式”得给POJO增加功能 从Spring 3.x开始,Spring被外界最为诟病的一点就是配置繁多,号称“配置地狱”
从Spring 4.x开始,Spring.io提供了三种方式编织Bean:
利用注解:隐式配置,例如:@Autowired、@Bean、@Component等,通过注解来简化xml文件。利用Java文件:显示配置,比xml配置的优势是具备类型安全利用传统的xml配置文件用该注解修饰的函数,会将结果直接填充到HTTP的响应体中,一般用于构建RESTful的api;
用于定义控制器类,在spring 项目中由 控制器 负责 将用户发来的URL请求 转发到 对应的服务接口(service层)
一般情况下@Controller与 @RequestMapping 一起使用,用于指定 URL对应的处理方法或者处理类
@Controllerpublic class Index { @RequestMapping(value ="/", method = RequestMethod.GET) @ResponseBody public String hello(){ return "hello world"; } } @Runwith: @RestController与Controller类似,使用这个注解表明是REST接口
提供路由信息,负责 URL到Controller中的具体函数的映射。
Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。
表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。
相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
相当于@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。
用来导入其他配置类。
用来加载xml配置文件。
自动导入依赖的bean
一般用于修饰service层的组件
@Scheduled(cron = " 0 22 13 ? * *") 这个注解是在容器启动后的指定时间执行 @EnableAutoConfiguration注解: 第二个类级别的注解是 @EnableAutoConfiguration 。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。 @PathVariable: @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。 @JsonlgnoreProperties(ignoreUnknown=true): 就是说这个属性不进行json的转化,忽略这个属性的json转化。 有意思作用呢? 主要是防止一些Json转换异常错误 @RunWith(): 在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境 Spring 架 在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集, @SpringBootTest(): @TestPropertySource() @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。 @Scope注解 作用域 @Lazy(true) 表示延迟初始化 @Service用于标注业务层组件、 @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即DAO组件。 @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 @Scope用于指定scope作用域的(用在类上) @PostConstruct用于指定初始化方法(用在方法上) @PreDestory用于指定销毁方法(用在方法上) @DependsOn:定义Bean初始化及销毁时的顺序 @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常 @Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下: @Autowired @Qualifier("personDaoBean") 存在多个实例配合使用 @Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。 @PostConstruct 初始化注解 @PreDestroy 摧毁注解 默认 单例 启动就加载 @Async异步方法调用 @Configuration: Spring Boot提倡基于Java的配置。尽管你可以使用一个XML源来调用 SpringApplication.run() ,我们通常建议你使用 @Configuration 类作为主要源。一般定义 main 方法的类也是主要 @Configuration 的一个很好候选。你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan 注解自动收集所有的Spring组件,包括 @Configuration 类。 如果你绝对需要使用基于XML的配置,我们建议你仍旧从一个 @Configuration 类开始。 你可以使用附加的 @ImportResource 注解加载XML配置文件。 @Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean