码迷,mamicode.com
首页 > 编程语言 > 详细

Spring

时间:2019-08-14 14:55:31      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:scan   ioc   http   spring   依赖   name   tco   cti   ati   

Spring是一个基于IOC和AOP的结构J2EE系统的框架

IOC

反转控制,Inversion of Control.将new方式创建对象变为交给Spring创建对象.
DI 依赖注入 Dependency Inject.会在生成的对象中注入默认值.

使用.

1.IDEA创建Spring项目.

2.修改spring-config.xml,加入需要的类的bean.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="c" class="pojo.Category">
        <property name="name" value="category 1" />
    </bean>
</beans>

3.使用时创建一个ApplicationContext的ClassPathXmlApplicationContext对象.之后通过该对象创建bean对象.

 public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "spring-config.xml" });

        Category c = (Category) context.getBean("c");

        System.out.println(c.getName());
    }

4.注入对象

<bean name="p" class="com.how2java.pojo.Product">
    <property name="name" value="product1" />
    <property name="category" ref="c" />
</bean>

注解方式:

    <context:annotation-config/>
    <bean name="c" class="com.how2java.pojo.Category">
        <property name="name" value="category 1" />
    </bean>
    <bean name="p" class="com.how2java.pojo.Product">
        <property name="name" value="product1" />
    </bean>

在Product的category属性或者setCategory()方法前加上@Autowired注解
或者在category属性前加上@Resource(name="c")注解

5.完全注解方式.

1.新增告诉Spring,bean类的位置都在包下.
2.在每个bean的类声明前加上@Component("name")标明此类是bean.初始化写在属性声明中.

AOP

面向切面编程.为了让不同的逻辑分离开来可以分别处理,AOP是必要的.AOP将程序的逻辑按不同的方面来看待,将程序逻辑划分为几个不同的切面.每个切面分别实现自己相关的逻辑,然后通过Spring整合到一起.这样做的好处在于每个方法都可以只关心自己负责的逻辑,方便了维护和使用,减少了代码的重复.
配置业务类:Component表示是bean,交给spring管理

@Component("s")
public class ProductService {
    public void doSomeService(){
        System.out.println("doSomeService");
    }
     
}

配置切面@Aspect表示是切面,@Around表示切入ProductService类的所有方法.

@Aspect
@Component
public class LoggerAspect {
     
    @Around(value = "execution(* com.how2java.service.ProductService.*(..))")
    public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("start log:" + joinPoint.getSignature().getName());
        Object object = joinPoint.proceed();
        System.out.println("end log:" + joinPoint.getSignature().getName());
        return object;
    }
}

配置xml

<context:component-scan base-package="com.how2java.aspect"/>
<context:component-scan base-package="com.how2java.service"/>
<aop:aspectj-autoproxy/>  

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-config.xml")
public class testSpring {
    @Autowired
    Category c;
    @Autowired
    ProductService s;

    @Test
    public void test() {
//        System.out.println(c.getName());
        s.doSomeService();
    }
}

参考资料:
how2j
java3y

Spring

标签:scan   ioc   http   spring   依赖   name   tco   cti   ati   

原文地址:https://www.cnblogs.com/bestefforts/p/11351317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!