//首先装载一个配置类
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);

配置类这样写
@Configuration  //等同与xml中的<beans>标签
@ComponentScan("com.pkg") //扫描包下的所有类
public class MyConfig {

}

茴字的另一种写法

@Configuration
public class MyConfig {
    @Bean
    public SomeService someService() {
        return new SomeService();
    }
}

@Component
@Scope("prototype")
//Singleton:表示该Bean是单例模式,在Spring容器中共享一个Bean的实例
//Prototype:每次调用都会新创建一个Bean的实例
//Request:这个是使用在Web中,给每一个http request新建一个Bean实例
//Session:这个同样是使用在Web中,表示给每一个http session新建一个Bean实例
public class SomeService {
        ....
}

//使用BEAN
SomeService bean = context.getBean(SomeService.class);

另各种注解
@Controller用于标注控制层组件
@Service用于标注业务层组件
@Repository用于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
级别Controller> Service > Repository

Spring EL

@Configuration
@ComponentScan("org.sang")
@PropertySource(value = "some.properties",encoding = "UTF-8")
public class ELConfig {
        //直接赋值
    @Value("String value")
    private String normal;
    
    //使用java代码
    @Value("#{T(java.lang.Math).random()*100}")
    private double randomNumber;
    
    //加载文本
    @Value("file.txt")
    private Resource testFile;
    
    //some.properties 中的值
    @Value("${ppp.value}")
    private String su;
    
    //代码
    @Value("#{T(java.lang.Math).random()*100}")
    private double randomNumber;
    
}

两种方法初始化和销毁
@Configuration
public class MyConfig {
    @Bean(initMethod = "init",destroyMethod = "destroy")
    BeanWayService beanWayService() {
        return new BeanWayService();
    }
    @Bean
    JSR250WayService jsr250WayService() {
        return new JSR250WayService();
    }
}

public class JSR250WayService {
    @PostConstruct//构造方法执行之后执行
    public void init() {
        System.out.println("JSR250WayService-init()");
    }

public JSR250WayService() {
        System.out.println("JSR250WayService-构造方法");
    }
    @PreDestroy//销毁之前执行
    public void destroy() {
        System.out.println("JSR250WayService-destroy()");
    }
}

@Profile设置初始化选项,类似的注解有@Conditional
 
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
    context.getEnvironment().setActiveProfiles("prod");
    context.register(ProfileConfig.class);
    context.refresh();//需要刷新
    
    
    @Configuration
    public class ProfileConfig {
    @Bean
    @Profile("dev")
    public DemoBean devDemoBean() {
        return new DemoBean("dev");
    }

@Bean
    @Profile("prod")
    public DemoBean prodDemoBean() {
        return new DemoBean("prod");
    }
    }

//计划任务
@EnableScheduling//开启对计划任务的支持

@Scheduled(cron = "0 51 20 * * ?")
    public void fixTimeExecution() {
     .....
    }
    
组合注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
@ComponentScan
public @interface MyConfiguration {
    String[] value();
}

@Configuration
@ComponentScan("com.pkg")
等同于
@MyConfiguration("com.pkg")

文章来源http://blog.csdn.net/u012702547

spring用注解配置,不用XML的更多相关文章

  1. Spring的注解配置与XML配置之间的比较

    注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作. 如:使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  2. Spring注解配置和xml配置优缺点比较

    Spring注解配置和xml配置优缺点比较 编辑 ​ 在昨天发布的文章<spring boot基于注解方式配置datasource>一文中凯哥简单的对xml配置和注解配置进行了比较.然后朋 ...

  3. spring aop注解配置

    spring aop是面向切面编程,使用了动态代理的技术,这样可以使业务逻辑的代码不掺入其他乱七八糟的代码 可以在切面上实现合法性校验.权限检验.日志记录... spring aop 用的多的有两种配 ...

  4. JavaWeb_(Spring框架)注解配置

    系列博文 JavaWeb_(Spring框架)xml配置文件  传送门 JavaWeb_(Spring框架)注解配置 传送门 Spring注解配置 a)导包和约束:基本包.aop包+context约束 ...

  5. spring aop注解方式与xml方式配置

    注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy ...

  6. 死磕Spring之AOP篇 - Spring AOP注解驱动与XML配置

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  7. Spring纯注解配置

    待改造的问题 我们发现,之所以我们现在离不开 xml 配置文件,是因为我们有一句很关键的配置: <!-- 告知spring框架在,读取配置文件,创建容器时,扫描注解,依据注解创建对象,并存入容器 ...

  8. SpringMVC基础配置(通过注解配置,非xml配置)

    SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...

  9. java框架之Spring(2)-注解配置IOC&AOP配置

    注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...

  10. Spring自定义注解配置切面实现日志记录

    一: spring-mvc.xml: <!--配置日志切面 start,必须与mvc配置在同一个配置文件,否则无法切入Controller层--><!-- 声明自动为spring容器 ...

随机推荐

  1. WPF 选项卡

    1.引用 xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock" 2.xaml代码 <xcad:DockingMa ...

  2. Java 性能调优工具

    CPU使用率工具: vmstat 检查应用性能时,应该首先审查CPU时间.代码优化的目的是提升而不是降低(更短时间段内的)CPU的使用率.在试图深入优化应用前,应该先弄清楚为何CPU使用率低.磁盘使用 ...

  3. spring 之 BeanDefinition & BeanDefinitionParser

    xml bean factory 的解析过程的 堆栈大概是这样的: at org.springframework.beans.factory.xml.NamespaceHandlerSupport.f ...

  4. leetcode79

    class Solution { public boolean exist(char[][] board, String word) { for(int i=0; i<board.length; ...

  5. leetcode94

    class Solution { public: vector<int> V; void inOrder(TreeNode* node) { if (node != NULL) { if ...

  6. java学习--equals

    Object类是所有类的基类. Object类有equals方法.而继承Object中的equals方法判断的是两个对象的引用是否相等,相当于"==",也就是说只有比较的两个对象为 ...

  7. Microsoft DQS sqlException 0x80131904 - SetDataQualitySessionPhaseTwo

    遇到这个问题的原因可以从报错信息看出来,大概率是.net framework的问题 可以尝试如下解决途径 1. regenerate .net Assemble for DQS 2. 如果步骤一无法解 ...

  8. 安装php调试工具 Xdebug的步骤 火狐 phpstorm联调

    一 安装服务器端 1 选择你的版本 <?php phpinfo(); ?> 比如我的: 关键是这三项:PHP Version 7.3.0Architecture x86 (x86是32位系 ...

  9. body标签

    标签(空格分隔): body标签 body标签: 想要在网页上展示出来的内容一定要放在body标签中. 把我们之前那一段HTML代码贴过来,保存到一个HTML格式的文件中. <!DOCTYPE ...

  10. [Solution] 973. K Closest Points to Origin

    Difficulty: Easy Problem We have a list of points on the plane. Find the K closest points to the ori ...