zoukankan      html  css  js  c++  java
  • spring注解开发

     Spring注解开发

    1. Spring原始注解

    Spring是轻代码而重配置的框架,配置比较繁琐,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。

    Spring原始注解主要是替代<Bean>的配置

    注解说明
    @Component 使用在类上用于实例化Bean
    @Controller 使用在web层类上用于实例化Bean
    @Service 使用在service层类上用于实例化Bean
    @Repository 使用在dao层类上用于实例化Bean
    @Autowired 使用在字段上用于根据类型依赖注入
    @Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入
    @Resource 相当于@Autowired+@Qualifier,按照名称进行注入
    @Value 注入普通属性
    @Scope 标注Bean的作用范围
    @PostConstruct 使用在方法上标注该方法是Bean的初始化方法
    @PreDestroy 使用在方法上标注该方法是Bean的销毁方法

    注意:

    使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean进行扫描以便识别使用注解配置的类、字段和方法。

     <!--配置组件扫描-->
        <context:component-scan base-package="com.lang"/>

    使用@Compont或@Repository标识UserDaoImpl需要Spring进行实例化。

    //@Component("userDao")
    @Repository("userDao")
    public class UserDaoImpl implements UserDao {
        @Override
        public void save() {
            System.out.println("save running... ...");
        }
    }

    使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化

    使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入

    //@Component("userService")
    @Service("userService")
    public class UserServiceImpl implements UserService {
        /*@Autowired
        @Qualifier("userDao")*/
        @Resource(name="userDao")
        private UserDao userDao;
        @Override
        public void save() {       
          userDao.save();
        }
    }

    使用@Value进行字符串的注入

    @Repository("userDao")
    public class UserDaoImpl implements UserDao {
        @Value("注入普通数据")
        private String str;
        @Value("${jdbc.driver}")
        private String driver;
        @Override
        public void save() {
            System.out.println(str);
            System.out.println(driver);
            System.out.println("save running... ...");
        }
    }

    使用@Scope标注Bean的范围

    //@Scope("prototype")
    @Scope("singleton")
    public class UserDaoImpl implements UserDao {
       //此处省略代码
    }

    使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法

    @PostConstruct
    public void init(){
        System.out.println("初始化方法....");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("销毁方法.....");
    }

    2. Spring新注解(springboot中用到的多)

    使用上面的注解还不能全部替代xml配置文件,还需要使用注解代替的配置如下:

    • 非自定义的Bean的配置:<bean>

    • 加载properties文件的配置:< context:property-placeholder >

    • 组件扫描的配置:< context:component-scan >

    • 引入其他文件:<import>

      注解说明
      @Configuration 用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解
      @ComponentScan 用于指定 Spring 在初始化容器时要扫描的包。 作用和在 Spring 的 xml 配置文件中的 <context:component-scan base-package="com.itheima"/>一样
      @Bean 使用在方法上,标注将该方法的返回值存储到 Spring 容器中
      @PropertySource 用于加载.properties 文件中的配置
      @Import 用于导入其他配置类

      @Configurable

      @ComponentScan

      @Import

      //标志该类是Spring的核心配置类
      @Configurable
      //<context:component-scan base-package="com.lang"/>     组件扫描
      @ComponentScan("com.lang")
      //<import resource=""/>     其他配置载入
      @Import({DataSourceConfiguration.class})//多个时在{xx,xx}
      public class SpringConfiguration {
      ​
      }

      @PropertySource

      @Value

      @Bean

    //<context:property-placeholder location="classpath:jdbc.properties"/>
    @PropertySource("classpath:jdbc.properties")
    public class DataSourceConfiguration {
        @Value("${jdbc.driver}")
        private String driver;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String username;
        @Value("${jdbc.password}")
        private String password;
    ​
        @Bean("dataSourse")//Spring会将当前方法的返回值以指定名称存储到Spring容器中
        public DataSource getDataSource(){
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            return dataSource;
        }
    }

    测试加载核心配置类创建Spring容器

     public static void main(String[] args) throws SQLException {
    ​
            //ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
            ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class);
            UserService userService = (UserService) app.getBean("userService");
            userService.save();
            DataSource dataSource = (DataSource) app.getBean("dataSourse");
            Connection con = dataSource.getConnection();
            System.out.println(con);
        }
     
  • 相关阅读:
    【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
    使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
    使用delphi 开发多层应用(二十三)KbmMW 的WIB
    实现KbmMw web server 支持https
    KbmMW 服务器架构简介
    Devexpress VCL Build v2014 vol 14.1.1 beta发布
    使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器
    KbmMW 4.50.00 测试版发布
    Basic4android v3.80 beta 发布
    KbmMW 认证管理器说明(转载)
  • 原文地址:https://www.cnblogs.com/DiaoStudy/p/13741847.html
Copyright © 2011-2022 走看看