spring boot 相关注解的认识

# 注解使用
声明bean:
    @Component 组件,没有明确角色的组件
    @Service 在业务逻辑层(Service层)使用
    @Repositpry 在数据访问层(dao层)使用
    @Controller 用于标注控制层组件
    @RestController  由 @ResponseBody + @Controller 组成
    
    @ComponentScan 扫描指定包下所有以上标注的注解类 并注册到spring容器里
    @SpringBootApplication  相当于 @ComponentScan +  @Configuration + @EnableAutoConfiguration


# 注入bean:
    @Resource   JSR-250提供使用
    @Autowired    Spring提供的注解  
    @Inject        JSR-330提供使用 
    @Qualifier    指定需要自动装配的Bean的名称


# El和资源调用:
    @Value    
        注入配置文件定义的值 @Value("#{server.port}")    
        注入值 @Value("老师")
        注入系统名 @Value("#{systemProperties['os.name']}")
        注入表达式 @Value("#{T(java.lang.Math).random() * 100 }")
        注入其他bean @Value("#{otherBean.property}") 
        注入文件资源 @Value("#{classpath:com/test/test.txt}") private Resource testFile;


# 配置类注入:
    @Configuration 标注在类上,注册为配置类使用,相当于配置的XML文件
    @Bean           声明当前方法返回bean,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。注册bean的id默认为方法名,可以指定ID 如 @Bean("cacheManager")
    注意:在spring 容器中,声明bean的方法的参数bean假如存在会自动注入,存在多个相同bean,用@Qualifier指定bean名注入
    @ConfigurationPropertires(prefix="author",locations="classpath:config/author.properties")   加载配置文件自动注入方法内

 

# AOP声明:
    @Aspect 声明切面类
    @Before
    @After 
    @Around 参数定义切点
    
    @EnableAspectJAutoProxy  开启spring对切面的支持


# 静态变量注入:
     private static String name; 
     
     //第一种
    @PostConstruct  
    public void init() {  
        name = "me"; 
    }
    //第二种 
    @Autowired 
    public void setName() {  
        name = "me"; 
    } 
    //第三种
    @Value("me")
    private static String name; 

 

# 配置环境区别注入: @Profile => spring.profiles.active
@Configuration
public class config {

    @Bean
    @Profile("dev")
    private Demo demo(){};    
    
    @Bean
    @Profile("prod")
    private Demo demo(){}; 
}

#  作用域
spring 默认注册的bean都为singleton
对于bean的作用域可用@Scope来注解使用 
    例子    
    @Bean
    @Scope("prototype")
    private Demo demo(){};    
    
    @Service
    @Scope("prototype")   // 指定

 

------------------- 待续    
# 多线程


# 任务执行


# spring mvc 配置
#请求相关
@RequestMapping 请求路径匹配 可以使用通配符匹配   * 匹配任意字符  ** 匹配任意路径  ?匹配单个字符
@PathVariable   注解从请求URL中获取参数并映射到方法的参数中
 @GetMapping("/{name}")
  public String get (@PathVariable String name) {
        return name;
  }
@ResponseBody    注解直接将返回的对象输出到客户端
@RequestParam   注解从请求URL中获取param参数并映射到方法的参数中
@RequestHeader  注解从请求URL中获取header参数并映射到方法的参数中
Model - Spring MVC中通用的模型
ModelAndView - 包含了模型和视图路径的对象
JavaBean - 将HTTP参数映射到JavaBean对象
MultipartFile - 用于处理文件上传
@ModelAttribute - 用于将该注解的变量作为Model的一个属性

# 开启springmvc的支持 @EnableWebMvc 
如下mvc 例子:
@EnableWebMvc 
@Configuration
@EnableSwagger2
public class Swagger2Config extends WebMvcConfigurationSupport {


    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/classes/views/");
        viewResolver.setSuffix(".jsp ");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }
}    
对静态资源的访问 addResourceLocations
对外暴露的访问接口 addResourceHandler


# 拦截器使用  自定义实现拦截
public class InterFaceUseTimeInterceptor implements HandlerInterceptor {
      /**
     * controller 执行之前调用
     */
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
       System.out.println("------preHandle-----");
        return true;
    }
    
      /**
     * controller 执行之后,且页面渲染之前调用
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
         System.out.println("------postHandle-----");
    }

    /**
     * 页面渲染之后调用,一般用于资源清理操作
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("------afterCompletion-----");

    }

}

#注册拦截器 
-- 对于springboot
@Configuration
public class WebAppConfig implements WebMvcConfigurer {

    @Resource
    private InterFaceUseTimeInterceptor interFaceUseTimeInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册自定义拦截器,添加拦截路径和排除拦截路径
        registry.addInterceptor(interFaceUseTimeInterceptor).addPathPatterns("/**").excludePathPatterns("/swagger-ui.html");
    }
}

-- 对于mvc 在spring-mvc.xml下

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/test/person"/>
        <mvc:mapping path="/test/code"/>
        <bean class="com.xxx.common.interceptor.LoginInterceptor"/>
    </mvc:interceptor>

 

# 控制器增强
@ControllerAdvice

# 基本日志配置
logging.file=logs/spring.log
logging.level.com.my.demo.user.controller = debug   指定包下的日志输出等级

# mvn 启动spring boot命令
mvn spring-boot:run

# 启动jar包指定环境
java -jar springweb.jar  --spring.profiles.active=prod --server.port=80 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值