Spring注解

  • @Component:标注一个普通的Spring Bean类

  • @Controller:标注一个控制器组件类

  • @Service:标注一个业务逻辑组件类

  • @Repository:标注一个DAO组件类

    指定了某些类可作为Spring Bean类之后,最后还需要让Spring搜索指定路径,此时需要在Spring配置文件中导入context Schema,并指定一个简单的搜索路径。

    <!-- 自动扫描指定包及其子包下的所有Bean类 -->
    <context:component-scan base-package="com.chromer.service" />
    

    Spring 也允许在使用@Component标注时指定Bean实例的名称:

    @Component("axe")
    public class SteelAxe implements Axe {
    	...
    }
    
  • @Autowired:将Spring容器中的Bean注入进来。默认采用byType匹配。

  • @Resource:和@Autowired注解相似。默认采用byName匹配。

  • @Autowired和@Resource的区别:当一个接口有多个实现类时,如果使用@Autowired,则需要使用@Qualifier("")注解来指定某个实现类,如果使用@Resource,这个书杰本身带一个name属性可以填那个类的类名。

    private JdbcTemplete jdbcTemplete;
    @Autowired
    public void setJdbcTemplete(JdbcTemplete jdbcTemplete) {
    	this.jdbcTemplete = jdbcTemplete;
    }
    @Resource(name = "b")
    public void setB() {
    
    }
    
  • @Configuration:用于定义配置类,可替换XML配置文件。被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

    // 将一个POJO标注为定义Bean的配置类
    @Configuration 	
    public class Configuration {
        // 定义两个Bean,并提供了Bean的实例化逻辑
        @Bean
        public UserDao userDao() {return new UserDao();}
        @Bean
        public LogDao logDao() {return new LogDao();}
        // 定义了logonService的Bean
        @Bean
        public LogonService logonService() {
    		LogonService logonService = new LogonService();
    		// 将上面定义的两个Bean注入logonService Bean中
    		logonService.setLogDao(logDao);
    		logonService.setUserDao(userDao);
    		return lognService;
    	}
    }
    

    相当于:

    <bean id="userDao" class="com.smart.UserDao" />
    <bean id="LogDao" class="com.smart.LogDao" />
    <bean id="logonService" class="com.smart.LogonService"
    	p:logDao-ref="userDao"
    	p:userDao-ref="logDao" />
    	
    
  • @Scope:控制Bean的作用范围。如果在@Bean处标注了@Scope("prototype"),则每次返回一个新的Bean。

  • @Import:将多个配置类组装到一个配置类中。,这样只需要注册这个组装好的配置类就可以启动容器。

  • @ImportResource:在@Configuration配置类中通过@ImportResource引入XML配置文件。

Bean不用配置方式的适用场景

基于XML注解配置基于注解配置基于Java类配置
适用场景(1)Bean实现类来源于第三方库,如DataSource。Jdbcemplete等,因无法再类中标注注解,所以通过XML配置方式较好。(2)命名空间的配置,如aop,context等,只能采用基于XML的配置。Bean的实现类是当前项目开发的,可以直接
在Java类中使用基于注解的配置。
基于Java类配置的优势在于可以通过代码方式控制Bean初始化的整体逻辑。如果实例化Bean的逻辑比较复杂,则比较适合基于Java类配置的方式。
  • @ComponentScan:ComponentScan做的事情就是告诉Spring从哪里找到bean
  • @Transactional
  • @RequestMapping
  • @RestController@RestController注解相当于@ResponseBody@Controller合在一起的作用。但是使用@RestController注解不能返回jsphtml页面,只能返回jsonxml
  • @EnableAutoConfiguration:是由Boot提供的,用于对Spring框架进行自动配置,减少了开发人员的工作量。
  • @SpringBootApplication:代替上面@Configuration@ComponentScan@EnableAutoConfiguration三个注解。
    @SpringBootApplication
    public class Application {
    	public static void main(String[] args) throws Exception {
    		SpringApplication.run(Application.class,args);
    	}
    }
    
  • @EnableTransactionManagement:在主类Application上标注@EnableTransactonManagement注解(开启事务支持,相当于XML中的<tx:annotation-driven />配置方式)
    @SpringBootApplication
    @EnableTransactionManagement
    public class Application {
    	public static void main(String[] args) throws Exception {
    		SpringApplication.run(Application.class, args);
    	}
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值